有没有办法卸载或重新加载当前加载的运行时?

时间:2010-09-14 17:28:43

标签: dll .net-4.0 assemblies runtime

自从我们开始将一些项目升级到.NET framework 4.0以来,我遇到了很多关于以下错误的问题:

  

此程序集由运行时构建   比当前加载的更新   运行时无法加载。

现在我们的安装程序应用程序正在进行中。安装程序会浏览DLL列表并在目标计算机上安装必要的DLL。使用

将每个程序集加载到上下文中
  

Assembly.LoadFile

队列中的第一个程序集是3.5。一旦安装程序选择4.0 DLL并尝试使用Assembly.LoadFile加载它,我就会收到该错误。 似乎加载第一个DLL设置了当前加载“运行时”的先例。

有没有办法在处理4.0 DLL之前卸载当前加载的运行时以避免此错误?

1 个答案:

答案 0 :(得分:1)

这取决于CLR是加载正在运行的程序集的可执行文件。如果它在CLR 2.0上运行,您将无法加载.NET 4.0程序集。因此,如果您尝试加载.NET 4.0程序集,请确保在CLR 4.0上运行该应用程序。你提到了安装程序。可以为.NET 4.0设置启动条件要求:

alt text


更新:

您还可以通过将此文件放在app.config文件中来强制CLR 4.0加载您的可执行文件:

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

因为CLR 4.0支持加载针对先前版本编译的程序集,所以这将允许您解决该问题,而无需针对.NET 4.0重新编译可执行文件。