11

我想问一下是否可以使用Fody- Costura ,它将依赖项嵌入到可执行文件和Obfuscar中,一起进行混淆。

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

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

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

4

2 回答 2

2

我制作了一个快速的框架控制台应用程序项目,并添加了 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 包有关。

于 2018-03-06T03:58:58.327 回答
0

我能够重现该错误。我使用了 asherber 的答案,但是一旦我将构建更改为发布,它就不再起作用了。
(“无法解决依赖关系:MahApps.Metro”)

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

于 2018-03-14T13:45:23.290 回答