Fody/Costura 和 Obfuscar 在 Visual Studio 2017 年的使用情况

Usage of Fody/Costura and Obfuscar in Visual Studio 2017

我想请问是否可以一起使用Fody-Costura, which embeds dependencies into the executable and Obfuscar进行混淆。

目前我正在苦苦挣扎,因为 Costura 的 Visual Studio 2017 中的 msbuild 目标在 obfuscar 之前执行(然后抱怨缺少依赖文件)。

由于 obfuscar 本身不提供目标,我使用 MSBuild.Obfuscar

有没有办法将这两者结合起来,也许是通过指定目标的顺序?

我做了一个快速框架控制台应用程序项目,我添加了 Costura、MSBuild.Obfuscar 和 NLog。为了让 Obfuscar 工作,我所要做的就是编辑 Obfuscar.xml 文件以包含实际的程序集名称:

<?xml version="1.0" encoding="utf-8"?>
<Obfuscator>
  <Var name="InPath" value="bin\Release" />
  <Var name="OutPath" value="$(InPath)\obfuscated" />
  <Var name="HidePrivateApi" value="true" />
  <!-- was: file="$(InPath)\"  -->
  <Module file="$(InPath)\ConsoleApp1.exe" />
</Obfuscator>

这对我来说很好。生成的程序集混淆了我的代码,并将 NLog 作为资源包含在内。如果您看到不同的结果,则可能与您的解决方案包含的特定其他 NuGet 包有关。

我能够重现错误。我使用了 asherber 的答案,但是一旦我将构建更改为发布,它就不再起作用了。
("Unable to resolve dependency: MahApps.Metro")

为了即使在发布时也能成功构建,我不得不将引用的 MahApps.Metro.dll 复制到 Release 文件夹中。
如果您从 NuGet 安装,您可以在项目文件夹的 packages 文件夹中找到 .dll。