在构建后步骤中调用 Obfuscar

问题描述 投票:0回答:2

我正在开发一个 C# WPF 项目,我需要一些混淆。我发现了 Obfuscar,它看起来非常有前途,使用 nuget 和构建后事件似乎是一个可靠的解决方案。因此,我安装了 nuget 包,并添加并调整了 obfuscar.xml 文件,使其能够正常工作。

但是,构建后命令引用了宏

$(Obfuscar)
,无法识别。现在,当我构建项目时,出现以下构建错误:

命令“obfuscar.xml”退出,代码为 9009。

请注意第一个引号后面的空格:

$(Obfuscar)
显然无法以某种方式解决。 我尝试了文档和其他网站上描述的所有步骤,包括将宏放在引号内,但我就是无法让它工作。

--编辑--

我做了什么: - 安装了 Obfuscar nuget - 添加了具有基本配置的 obfuscar.xml 文件 - 添加了构建后事件 - 尝试构建

我在构建后事件方面尝试过的:

$(Obfuscar) obfuscar.xml

命令“obfuscar.xml”退出,代码为 9009。

"$(Obfuscar)" obfuscar.xml

命令“”“obfuscar.xml”退出,代码为 9009。

我尝试构建并运行示例项目,效果非常好。我已将示例项目中的构建后事件(不是 xml 文件)复制粘贴到我的项目中,但这只是给出了相同的结果。

我也不明白的是 Visual Studio 如何知道

$(Obfuscar)
的含义或如何将其解析为 Obfuscar 可执行文件的路径。我是否需要在某处进行某种配置,或者是否需要某种特殊的黑魔法才能起作用?

--编辑2--

我已经现在可以通过将 Obfuscar 可执行文件从 nuget 文件夹复制到我的 PATH 中的一个文件夹(现在是 C:\Windows)作为“obfuscar.exe”,然后简单地使用构建后命令

obfuscar obfuscar.xml
。我说有点,因为实际上使用 nuget 而不是复制的可执行文件是现在我没有自动更新。现在,当新版本出现时,我必须手动复制/粘贴它。我想我现在必须将其添加到自述文件中,直到出现更好的解决方案。

c# .net wpf obfuscation obfuscar
2个回答
0
投票

就我而言,问题是这段代码(在项目文件中):

<PropertyGroup>
   <PostBuildEvent>"$(Obfuscar)" obfuscar.xml</PostBuildEvent>
</PropertyGroup>

在这行之前(我的是VB.NET项目):

<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />

我更改了项目中两个 XML 代码片段的顺序,现在工作正常了。


0
投票

在我的例子中,$(Obfuscar)参数解析为

C:\Users\Me\Documents\MyProject\packages\Obfuscar.2.2.39 uild.. ools\Obfuscar.Console.exe

所以某个地方的配置有错误。我只是在构建事件中硬编码了 Obfuscar.Console.exe 的路径(但我确信有更复杂的解决方案)。

© www.soinside.com 2019 - 2024. All rights reserved.