Dll 是否有方法卸载或重新加载当前加载的运行时?

Dll 是否有方法卸载或重新加载当前加载的运行时?,dll,.net-4.0,assemblies,runtime,Dll,.net 4.0,Assemblies,Runtime,自从我们开始将一些项目升级到.NET framework 4.0以来,我遇到了许多与以下错误有关的问题: 此程序集由运行时生成 比当前加载的更新 无法加载运行时和 现在,我们的安装程序应用程序正在发生这种情况。安装程序浏览DLL列表,并在目标计算机上安装必要的DLL。使用将每个程序集加载到上下文中 Assembly.LoadFile 队列中的第一个程序集是3.5。一旦安装程序拿起一个4.0 DLL并尝试使用Assembly.LoadFile加载它,我就会得到那个错误。 似乎加载第一个DLL设置了

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

此程序集由运行时生成 比当前加载的更新 无法加载运行时和

现在,我们的安装程序应用程序正在发生这种情况。安装程序浏览DLL列表,并在目标计算机上安装必要的DLL。使用将每个程序集加载到上下文中

Assembly.LoadFile

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


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

这将取决于加载正在运行的程序集的可执行文件是什么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重新编译可执行文件即可解决此问题。

这将取决于加载正在运行的程序集的可执行文件是什么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重新编译可执行文件即可解决此问题。

Right。我提到的安装程序是我们自己定制的可执行应用程序;不是安装解决方案安装程序项目。您可以在任何可执行文件上设置启动条件吗?错误所指的当前运行时,这是特定应用程序使用的运行时。是否正确?您需要根据.NET 4.0编译此可执行文件。通过这样做,它将自动在CLR 4.0(如果可用)下运行,并且您将能够加载根据.NET 4.0.Right编译的程序集。我提到的安装程序是我们自己定制的可执行应用程序;不是安装解决方案安装程序项目。您可以在任何可执行文件上设置启动条件吗?错误所指的当前运行时,这是特定应用程序使用的运行时。是否正确?您需要根据.NET 4.0编译此可执行文件。通过这样做,它将自动在CLR 4.0(如果可用)下运行,并且您将能够加载根据.NET 4.0编译的程序集。