升级到Windows 10后,将构建混合模式程序集

时间:2015-09-07 00:09:16

标签: .net windows .net-4.0 .net-2.0 windows-10

我使用小应用程序,它在Windows 8.1上工作正常,在我运行应用程序后升级到Windows 10后我得到了未处理的异常

System.IO.FileLoadException: Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

我可以用它做一些事情而不重新编译吗?我不再拥有源代码。也许编辑MSIL,SetUp旧运行时...... ??

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您不需要重新编译应用程序。应该足够将yourapp.exe.config添加到同一文件夹:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
    </startup>
</configuration>

或添加到现有配置。

如果这不起作用并且您没有源代码,则可以通过

将应用程序反编译为IL代码
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools>ildasm.exe D:\Temp\yourapp.exe /output:D:\Temp\yourapp\yourapp.il

修复IL中的运行时版本,然后进行编译

C:\Windows\Microsoft.NET\Framework\v4.0.30319>ilasm.exe D:\Temp\yourapp\yourapp.il /output:D:\Temp\yourappPatch.exe

答案 1 :(得分:0)

主要问题是关于Windows 8.x仍然接受.Net Framework 2.0兼容性(对于ASP目的,我猜)但Windows 10拒绝它。

我想你不会有任何解决方案,除非你必须重新编译你的应用程序添加参考库并设置放在你的应用程序文件夹中。