MSBUILD 动态创建配置 XML Dotfuscator
MSBUILD Dynamically Create Config XML Dotfuscator
我正在尝试混淆目录中的一堆文件,每次构建都会生成越来越多的文件。我想知道是否有一种方法可以使用 MSBUILD 任务动态创建 Dotfuscator 配置 xml 文件,每次将新文件添加到目录时都会生成 xml 文件?
这可能是使用 Directory input 的好时机。这种类型的 Dotfuscator 输入捕获目录中的所有程序集,而不是表示单个程序集(.exe
或 .dll
)。当目录内容发生变化时,Dotfuscator 的构建将自动选取任何新程序集。
要创建带有目录输入的 Dotfuscator 配置文件,请打开 GUI 并像往常一样添加输入(方向 for Community Edition's GUI and for Professional Edition's standalone GUI),而不是 select 从 Browse... 对话框,只需导航到目录并单击 "Open",而 "File name" 仍列为 "Folder Select"。然后,保存您的配置。
从现在开始,无论何时 运行 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 会在 运行 基于此配置文件构建时处理 所有 目录中的程序集,而不仅仅是那些两个列出。
配置中的程序集元素就在那里,因此您仍然可以针对 GUI 中的各个程序集制定规则(例如,使一个程序集处于库模式)。
该列表表示 GUI 上次修改配置时目录的状态。
免责声明:我在 Dotfuscator 团队工作,回答这个问题是我工作的一部分。
由于评论中的说明而引起的附加说明:目录包具有一项功能,您可以从混淆中排除某些程序集。这些程序集将被视为包工件,并且只是从输入复制到输出而无需修改。任何引用这些排除程序集的混淆程序集仍将得到正确处理。
要在 GUI 中执行此操作,请右键单击包中的程序集,然后 select "Exclude assembly from package"。或者,如果您更愿意编辑配置文件,请添加以下 <option>
标记作为每个相关 <inputassembly>
标记的子标记:
<option>artifact</option>
最新的 Dotfuscator 版本 4.41.1 有最新的标志
真的
如果文件丢失,这将生成 Dotfuscator 配置文件。您也可以按照最新入门指南 https://www.preemptive.com/dotfuscator/pro/userguide/en/getting_started_protect.html
中的说明将其添加到 csproj
我正在尝试混淆目录中的一堆文件,每次构建都会生成越来越多的文件。我想知道是否有一种方法可以使用 MSBUILD 任务动态创建 Dotfuscator 配置 xml 文件,每次将新文件添加到目录时都会生成 xml 文件?
这可能是使用 Directory input 的好时机。这种类型的 Dotfuscator 输入捕获目录中的所有程序集,而不是表示单个程序集(.exe
或 .dll
)。当目录内容发生变化时,Dotfuscator 的构建将自动选取任何新程序集。
要创建带有目录输入的 Dotfuscator 配置文件,请打开 GUI 并像往常一样添加输入(方向 for Community Edition's GUI and for Professional Edition's standalone GUI),而不是 select 从 Browse... 对话框,只需导航到目录并单击 "Open",而 "File name" 仍列为 "Folder Select"。然后,保存您的配置。
从现在开始,无论何时 运行 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 会在 运行 基于此配置文件构建时处理 所有 目录中的程序集,而不仅仅是那些两个列出。 配置中的程序集元素就在那里,因此您仍然可以针对 GUI 中的各个程序集制定规则(例如,使一个程序集处于库模式)。 该列表表示 GUI 上次修改配置时目录的状态。
免责声明:我在 Dotfuscator 团队工作,回答这个问题是我工作的一部分。
由于评论中的说明而引起的附加说明:目录包具有一项功能,您可以从混淆中排除某些程序集。这些程序集将被视为包工件,并且只是从输入复制到输出而无需修改。任何引用这些排除程序集的混淆程序集仍将得到正确处理。
要在 GUI 中执行此操作,请右键单击包中的程序集,然后 select "Exclude assembly from package"。或者,如果您更愿意编辑配置文件,请添加以下 <option>
标记作为每个相关 <inputassembly>
标记的子标记:
<option>artifact</option>
最新的 Dotfuscator 版本 4.41.1 有最新的标志 真的 如果文件丢失,这将生成 Dotfuscator 配置文件。您也可以按照最新入门指南 https://www.preemptive.com/dotfuscator/pro/userguide/en/getting_started_protect.html
中的说明将其添加到 csproj