【问题标题】:MSBUILD Dynamically Create Config XML DotfuscatorMSBUILD 动态创建配置 XML Dotfuscator
【发布时间】:2017-08-19 09:20:01
【问题描述】:

我试图混淆目录中的一堆文件,每次构建都会生成越来越多的文件。我想知道是否有一种方法可以使用 MSBUILD 任务动态创建 Dotfuscator 配置 xml 文件,该任务将在每次向目录中添加新文件时生成 xml 文件?

【问题讨论】:

    标签: msbuild obfuscation msbuild-task msbuildcommunitytasks dotfuscator


    【解决方案1】:

    这可能是使用Directory input 的好时机。这种类型的 Dotfuscator 输入不是表示单个程序集(.exe.dll),而是捕获目录中的所有程序集。当目录内容发生变化时,Dotfuscator 的构建将自动拾取任何新的程序集。

    要使用 Directory 输入创建 Dotfuscator 配置文件,请打开 GUI 并像往常一样添加输入(方向 for Community Edition's GUIfor 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 中执行此操作,请右键单击包中的程序集,然后选择“从程序包中排除程序集”。或者,如果您希望编辑配置文件,请将以下 &lt;option&gt; 标签添加为每个相关 &lt;inputassembly&gt; 标签的子标签:

    <option>artifact</option>
    

    【讨论】:

    • 感谢您的回复。现在它带来了另一个问题,所以我不想混淆文件夹中的所有 dll,因为我正在使用的一些 .dll 是第三方的并且它们已经被混淆了。所以我感兴趣的可以复制到不同的位置,使用 Dotfuscator 混淆它们并在创建包之前将它们复制回来?用户指南中是否有任何示例 msbuild 任务用于 dotfuscator 目录支持作为示例?
    • @varun7447 我在我的回答中添加了一条注释,我认为它将回答您评论的第一个问题。我建议使用它描述的方法而不是复制一些 DLL,因为这样您就必须配置自定义程序集加载路径(您的混淆 DLL 将引用已排除的 DLL,它们不再位于同一目录中)。至于你关于MSBuild支持的第二个问题,这个案例没有具体的例子,但由于包是配置文件的一个特性,你可以将配置文件的路径传递给Dotfuscate任务的ConfigPath属性。
    • 完美,这真的很有帮助。感谢您的及时回复。
    【解决方案2】:

    最新的 Dotfuscator 版本 4.41.1 具有最新标志 真的 如果文件丢失,这将生成 Dotfuscator 配置文件。您也可以按照最新的入门指南https://www.preemptive.com/dotfuscator/pro/userguide/en/getting_started_protect.html 中的说明将其添加到 csproj 中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 2016-03-27
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多