自从我们开始将一些项目升级到.NET framework 4.0以来,我遇到了很多关于以下错误的问题:
此程序集由运行时构建 比当前加载的更新 运行时无法加载。
现在我们的安装程序应用程序正在进行中。安装程序会浏览DLL列表并在目标计算机上安装必要的DLL。使用
将每个程序集加载到上下文中Assembly.LoadFile
队列中的第一个程序集是3.5。一旦安装程序选择4.0 DLL并尝试使用Assembly.LoadFile加载它,我就会收到该错误。 似乎加载第一个DLL设置了当前加载“运行时”的先例。
有没有办法在处理4.0 DLL之前卸载当前加载的运行时以避免此错误?
答案 0 :(得分:1)
这取决于CLR是加载正在运行的程序集的可执行文件。如果它在CLR 2.0上运行,您将无法加载.NET 4.0程序集。因此,如果您尝试加载.NET 4.0程序集,请确保在CLR 4.0上运行该应用程序。你提到了安装程序。可以为.NET 4.0设置启动条件要求:
更新:
您还可以通过将此文件放在app.config文件中来强制CLR 4.0加载您的可执行文件:
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
因为CLR 4.0支持加载针对先前版本编译的程序集,所以这将允许您解决该问题,而无需针对.NET 4.0重新编译可执行文件。