无法将Dotfuscator与引用Microsoft.Bcl.Async的应用程序一起使用

时间:2013-05-16 23:36:34

标签: .net visual-studio-2012 obfuscation async-await dotfuscator

为了支持XP,我的一个项目现在面向.NET 4.0,并使用Microsoft.Bcl.Async来实现.NET 4.5的异步功能。

麻烦的是,我不再能够使用Dotfuscator(使用专业版或VS 2012附带的社区版)对生成的应用程序进行模糊处理。

尝试运行混淆的可执行文件时,程序崩溃并出现以下错误:

  

无法从程序集'System.Runtime,Version = 2.5.19.0

加载类型'System.Object'

该错误似乎来自Microsoft.Bcl.Async所需的app.config设置:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

似乎其他人使用different obfuscation software遇到类似的问题,这是由供应商修复的。

我有什么办法可以解决这个问题吗?或者这是Dotfuscator的一个问题? (公平地说,所有麻烦都源于微软不支持XP上的.NET 4.5 ......)

1 个答案:

答案 0 :(得分:2)

此问题已在Dotfuscator版本4.10.2(今天发布)中修复:http://www.preemptive.com/support/dotfuscator-support/dotfuscator-pro-change-log/520

根本原因可追溯到框架的ilasm实用程序的问题:https://connect.microsoft.com/VisualStudio/feedback/details/801891/ilasm-incorrectly-updates-references-from-mscorlib-to-system-runtime-for-certain-types-when-system-runtime-is-included

如果由于某种原因无法更新,在安装了仅.NET 4.0的系统上运行模糊处理也应该足够了。