我使用小应用程序,它在Windows 8.1上工作正常,我升级到Windows 10后,运行应用程序我得到了未处理的exception
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旧的运行时…?
感谢帮助
你不应该需要重新编译应用程序。 应该足够将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
主要问题是关于Windows 8.x仍然接受.Net Framework 2.0兼容性(对于ASP的目的,我猜),但Windows 10拒绝它。
我想你不会有任何解决方案,除非你必须重新编译你的应用程序添加参考库和设置放在您的应用程序文件夹。