【发布时间】:2017-08-19 09:20:01
【问题描述】:
我试图混淆目录中的一堆文件,每次构建都会生成越来越多的文件。我想知道是否有一种方法可以使用 MSBUILD 任务动态创建 Dotfuscator 配置 xml 文件,该任务将在每次向目录中添加新文件时生成 xml 文件?
【问题讨论】:
标签: msbuild obfuscation msbuild-task msbuildcommunitytasks dotfuscator
我试图混淆目录中的一堆文件,每次构建都会生成越来越多的文件。我想知道是否有一种方法可以使用 MSBUILD 任务动态创建 Dotfuscator 配置 xml 文件,该任务将在每次向目录中添加新文件时生成 xml 文件?
【问题讨论】:
标签: msbuild obfuscation msbuild-task msbuildcommunitytasks dotfuscator
这可能是使用Directory input 的好时机。这种类型的 Dotfuscator 输入不是表示单个程序集(.exe 或 .dll),而是捕获目录中的所有程序集。当目录内容发生变化时,Dotfuscator 的构建将自动拾取任何新的程序集。
要使用 Directory 输入创建 Dotfuscator 配置文件,请打开 GUI 并像往常一样添加输入(方向 for Community Edition's GUI 和 for Professional Edition's standalone GUI),但不要从 Browse.. 中选择文件。 . 对话框,只需导航到目录并单击“打开”,而“文件名”仍列为“文件夹选择”。然后,保存您的配置。
从现在开始,无论何时运行 Dotfuscator(无论是从独立 GUI、命令行、Visual Studio 集成还是 MSBuild 任务),目录中的所有程序集都将作为输入处理。
注意:如果您查看配置文件本身,您可能会惊讶于它仍然会列出单个程序集:
<input>
<loadpaths />
<asmlist>
<package refid="19e1b0c5-7221-476f-af4b-bafef68edc95">
<file dir="C:\code\BasicTestApp\BasicTestApp\bin" name="Debug" />
<asmlist>
<inputassembly refid="a6da5d8d-c181-4103-840d-d8cc7c85937a">
<option>honoroas</option>
<option>stripoa</option>
<option>transformxaml</option>
<file dir="" name="BasicTestApp.exe" />
</inputassembly>
<inputassembly refid="df84dad0-fbe8-49ab-b8c8-9fb59e706785">
<option>honoroas</option>
<option>stripoa</option>
<option>library</option>
<option>transformxaml</option>
<file dir="" name="ClassLibrary.dll" />
</inputassembly>
</asmlist>
</package>
</asmlist>
</input>
尽管有这种布局,Dotfuscator 将在运行基于此配置文件的构建时处理C:\code\BasicTestApp\BasicTestApp\bin\Debug 目录中的所有 程序集,而不仅仅是列出的那两个。
配置中的程序集元素就在那里,因此您仍然可以针对 GUI 中的单个程序集制定规则(例如,使一个程序集处于库模式)。
该列表表示 GUI 上次修改配置时目录的状态。
免责声明:我在 Dotfuscator 团队工作,我将回答这个问题作为我工作的一部分。
由于 cmets 中的说明而补充说明:目录包具有一个功能,您可以将某些程序集排除在混淆之外。这些程序集将被视为包工件,并且只是从输入到输出复制而无需修改。任何引用这些排除程序集的混淆程序集仍将被正确处理。
要在 GUI 中执行此操作,请右键单击包中的程序集,然后选择“从程序包中排除程序集”。或者,如果您希望编辑配置文件,请将以下 <option> 标签添加为每个相关 <inputassembly> 标签的子标签:
<option>artifact</option>
【讨论】:
最新的 Dotfuscator 版本 4.41.1 具有最新标志 真的 如果文件丢失,这将生成 Dotfuscator 配置文件。您也可以按照最新的入门指南https://www.preemptive.com/dotfuscator/pro/userguide/en/getting_started_protect.html 中的说明将其添加到 csproj 中
【讨论】: