Dotfuscator 命令已退出,代码为 1 xamarin.ios

Dotfuscator command exited with code 1 xamarin.ios

我正在尝试将 PreEmptive Solutions - Dotfuscator 与我的 Xamarin.IOS 应用程序一起使用,但构建失败并且出现此错误:

我已经完成了这里的所有步骤:

https://www.preemptive.com/obfuscating-xamarin-with-dotfuscator

我的 Xamarin.Android 工作正常,但是 IOS 项目失败了。

错误:

The command ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\PreEmptive Solutions\Dotfuscator and Analytics Community Edition\dotfuscatorCLI.exe" /p:InDir="obj\iPhone\Release\DotfuscatorXamarin\dfin",OutDir="obj\iPhone\Release\DotfuscatorXamarin\dfout",ReportDir="DotfuscatorReports\iPhone\Release" "DotfuscatorConfig.xml"" exited with code 1.

知道如何修复它吗?

2017 年 6 月 29 日更新: Xamarin.IOS 项目DotfuscatorConfig.xml 文件的内容

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE dotfuscator SYSTEM "http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v2.3.dtd">
<dotfuscator version="2.3">
  <propertylist>
    <property name="InDir" value="obj\iPhone\Release\DotfuscatorXamarin\dfin" />
    <property name="OutDir" value="obj\iPhone\Release\DotfuscatorXamarin\dfout" />
    <property name="ReportDir" value="DotfuscatorReports\iPhone\Release" />
  </propertylist>
  <global>
    <option>monocompat</option>
  </global>
  <input>
    <asmlist>
      <inputassembly refid="7cf160e1-e28e-4f81-bd8d-f10fdcbcc3f8">
        <option>honoroas</option>
        <option>stripoa</option>
        <option>library</option>
        <option>transformxaml</option>
        <file dir="${configdir}${InDir}" name="MyProject.dll" />
      </inputassembly>
      <inputassembly refid="2d40ee83-3b30-421c-8b1a-fa4d404fb2d9">
        <option>honoroas</option>
        <option>stripoa</option>
        <option>library</option>
        <option>transformxaml</option>
        <file dir="${configdir}${InDir}" name="MyProject.dll.mdb" />
      </inputassembly>
      <inputassembly refid="11652964-9a02-4f24-b042-25f260fada88">
        <option>honoroas</option>
        <option>stripoa</option>
        <option>library</option>
        <option>transformxaml</option>
        <file dir="${configdir}${InDir}" name="MyProject.iOS.exe" />
      </inputassembly>
    </asmlist>
  </input>
  <output>
    <file dir="${configdir}${OutDir}" />
  </output>
  <renaming>
    <option>xmlserialization</option>
    <mapping>
      <mapoutput overwrite="true">
        <file dir="${configdir}${ReportDir}" name="Renaming.xml" />
      </mapoutput>
    </mapping>
    <referencerulelist>
      <referencerule rulekey="{6655B10A-FD58-462d-8D4F-5B1316DFF0FF}" />
      <referencerule rulekey="{7D9C8B02-2383-420f-8740-A9760394C2C1}" />
      <referencerule rulekey="{229FD6F8-5BCC-427b-8F72-A7A413ECDF1A}" />
      <referencerule rulekey="{2B7E7C8C-A39A-4db8-9DFC-6AFD38509061}" />
      <referencerule rulekey="{494EA3BA-B947-44B5-BEE8-A11CC85AAF9B}" />
      <referencerule rulekey="{89769974-93E9-4e71-8D92-BE70E855ACFC}" />
      <referencerule rulekey="{4D81E604-A545-4631-8B6D-C3735F793F80}" />
    </referencerulelist>
  </renaming>
  <sos mergeruntime="true">
    <option>version:v4</option>
    <option>disable</option>
    <option>dontsendtamper</option>
  </sos>
  <smartobfuscation>
    <smartobfuscationreport verbosity="all" overwrite="true">
      <file dir="${configdir}${ReportDir}" name="SmartObfuscation.xml" />
    </smartobfuscationreport>
  </smartobfuscation>
</dotfuscator>

而对于 PreEmptive.Dotfuscator.Xamarin.targets 文件,我使用的是来自官方网站的文件。 PreEmptive.Dotfuscator.Xamarin.targets

如问题评论中所述,我为 PreEmptive Solutions 工作。 这是 Dotfuscator-Xamarin 目标文件 (PreEmptive.Dotfuscator.Xamarin.targets) 中的错误,对此深感抱歉。

注意:此问题已在目标文件的 1.1.0 版中得到更正。最新版本的文件可以在 this page.

下载

具体来说,在生成初始 Dotfuscator 配置文件 (DotfuscatorConfig.xml) 时,我们将 MDB(Mono 调试符号)文件视为输入程序集。 下一版本的目标文件将解决此问题。

要解决目标文件 1.0.0 版的这个问题,请从 DotfuscatorConfig.xml 中删除以下行:

  <inputassembly refid="2d40ee83-3b30-421c-8b1a-fa4d404fb2d9">
    <option>honoroas</option>
    <option>stripoa</option>
    <option>library</option>
    <option>transformxaml</option>
    <file dir="${configdir}${InDir}" name="MyProject.dll.mdb" />
  </inputassembly>

目标文件将从那时起使用您更正后的版本。