我想询问是否可以同时使用Fody-Costura和Obfuscar,前者将依赖项嵌入到可执行文件中,后者用于混淆。
目前我遇到了问题,因为在Visual Studio 2017中,Costura的msbuild目标会先于obfuscar的目标执行(然后obfuscar会抱怨缺少依赖文件)。
由于obfuscar本身不提供目标,所以我正在使用MSBuild.Obfuscar。
有没有办法将这两个工具结合起来,比如通过指定目标的顺序?
我想询问是否可以同时使用Fody-Costura和Obfuscar,前者将依赖项嵌入到可执行文件中,后者用于混淆。
目前我遇到了问题,因为在Visual Studio 2017中,Costura的msbuild目标会先于obfuscar的目标执行(然后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的答案,但是一旦我将构建更改为发布版本,它就不再起作用了。
("无法解决依赖项:MahApps.Metro")
为了使其在发布版本上也能成功构建,我不得不将引用的MahApps.Metro.dll复制到Release文件夹中。
如果你是从NuGet安装的,你可以在项目文件夹的packages文件夹中找到.dll文件。