我试图混淆目录中的一堆文件,每次构建都会生成越来越多的文件。我想知道是否有一种方法可以使用MSBUILD任务动态创建Dotfuscator配置xml文件,该任务将在每次向目录中添加新文件时生成xml文件?
这可能是使用目录输入的好时机。这种类型的Dotfuscator输入不是代表单个程序集(.exe
或.dll
),而是捕获目录中的所有程序集。当目录的内容发生变化时,Dotfuscator的构建将自动拾取任何新的程序集。
要使用目录输入制作 Dotfuscator 配置文件,请像往常一样打开 GUI 并添加输入(社区版的 GUI 和专业版的独立 GUI 的说明),但不要从">浏览..."对话框中选择文件,只需导航到目录并单击"打开",而"文件名"仍列为"文件夹选择"。然后,保存您的配置。
从现在开始,无论何时运行 Dotfuscator (无论是从独立的 GUI、命令行、Visual Studio 集成还是 MSBuild 任务),目录中的所有程序集都将作为输入进行处理。
注意:如果您查看配置文件本身,您可能会惊讶于它仍然会列出各个程序集:
<input>
<loadpaths />
<asmlist>
<package refid="19e1b0c5-7221-476f-af4b-bafef68edc95">
<file dir="C:codeBasicTestAppBasicTestAppbin" 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:codeBasicTestAppBasicTestAppbinDebug
目录中的所有程序集,而不仅仅是列出的两个程序集。 配置中的程序集元素就在那里,因此您仍然可以针对 GUI 中的单个程序集制定规则(例如,使一个程序集处于库模式)。 该列表表示 GUI 上次修改配置时目录的状态。
免责声明:我在Dotfuscator团队工作,并回答这个问题作为我工作的一部分。
由于注释中的澄清,附加说明:目录包具有一项功能,您可以在其中从混淆中排除某些程序集。这些程序集将被视为包项目,并且只是从输入复制到输出而不进行修改。引用这些排除的程序集的任何经过模糊处理的程序集仍将正确处理。
要在 GUI 中执行此操作,请右键单击包中的程序集,然后选择"从包中排除程序集"。或者,如果您希望编辑配置文件,请将以下<option>
标记添加为每个相关<inputassembly>
标记的子标记:
<option>artifact</option>
最新的 Dotfuscator 版本 4.41.1 具有最新的标志 真 如果缺少该文件,这将生成 Dotfuscator 配置文件。您也可以将其添加到 csproj 中,如最新的入门指南中所述 https://www.preemptive.com/dotfuscator/pro/userguide/en/getting_started_protect.html