使用 Xamarin android 的 Dotfuscator 在分析标记后构建失败

Dotfuscator with Xamarin android fails build after Analyzing markup

我正在尝试使用带有 Visual Studio 2017 的 Dotfuscator 社区版来为 Android 应用构建 Xamarin。 Visual Studio 输出给我错误:

1>C:\xp\XamarinForms\XamarinForms\XamarinForms.Android\PreEmptive.Dotfuscator.Xamarin.targets(347,5): error MSB3073: The command ""C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe" /p:InDir="obj\Release\DotfuscatorXamarin\dfin",OutDir="obj\Release\DotfuscatorXamarin\dfout",ReportDir="DotfuscatorReports\Release" "DotfuscatorConfig.xml"" exited with code 1.

当我 运行 使用 cmd.exe 命令时,我得到以下输出:

[Build Output] Resolving method references...
[Build Output] Analyzing Markup...
[Build Output] Value cannot be null.
Parameter name: key
[Build Output] Build Error.

我在 Dotfuscator GUI 应用程序中打开 DotfuscatorConfig.xml 并尝试更改一些选项。 在重命名->选项->启用重命名中禁用重命名后,构建成功,但不重命名会使混淆变得毫无意义。

你能帮我看看到底是什么导致了这个问题以及如何解决它吗?

(免责声明:我在 Dotfuscator 团队的 PreEmptive Solutions 工作,我以该身份回答这个问题。)

更新 (2018-03-15):此问题的修复已在 Dotfuscator Community Edition 5.34.0 (changelog, note the "Markup Analysis" fix). You can always download the latest version for Visual Studio 2017 here.

在此版本之前写的上一个答案如下。


这似乎是最近在 Dotfuscator Professional Edition 4.33.0 (changelog) 中修复的标记分析错误。虽然此修复当前未在 Community Edition 5.32.1(Visual Studio 2017 15.5 附带的版本)中发布,但作为目前的解决方法,您可以禁用标记分析。这比完全关闭重命名要好。

要禁用标记分析,请将项目 属性 添加到您的 Dotfuscator 配置文件,名称为 disable_markup_analysis,值为 true。您可以使用 Community Edition GUI 执行此操作,或者,如果您愿意,可以直接编辑配置文件:

  1. 在文本编辑器中打开 DotfuscatorConfig.xml 文件。
  2. 在根 <dotfuscator> 部分中,添加子 <propertylist> 标签及其结束 </propertylist> 标签(如果尚不存在)。
  3. <propertylist> 部分中,添加标签 <property name="disable_markup_analysis" value="true" />