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

时间:2012-05-15 18:57:32

标签: c# dll .net-4.0 .net-2.0

我收到错误:“此程序集由比当前加载的运行时更新的运行时构建,无法加载。”

我有一个由.NET 2.0项目调用的.NET 4.0 DLL项目。有没有办法调和框架中的差异?

12 个答案:

答案 0 :(得分:44)

  

我有一个由.NET 2.0项目调用的.NET 4.0 DLL项目。有没有办法调和框架中的差异?

不是这样,没有。 .NET 4 CLR可以加载.NET 2程序集(通常 - 混合模式程序集有一些例外,IIRC),但反之亦然。

您必须将.NET 2项目升级到.NET 4,或将.NET 4项目降级到.NET 3.5(或更早版本)。

答案 1 :(得分:8)

如果您已经尝试过此页面上的所有其他逻辑解决方案,请仔细检查一下。在我的app.config中,我有一个旧框架的引用。

<startup>
  <supportedRuntime version="v2.0.50727"/>
</startup>

应该是

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

项目选项卡正确显示了v4.0,但是app.config没有提交到我们的repo进行更改。为了解决这个问题,我将框架更改为其他内容并再次返回4.0,这更新了我的app.config文件。

答案 2 :(得分:7)

我收到了同样的错误消息。我在给予

  

C:\ Windows \ Microsoft.NET \框架\ V2.0.50727 \ InstallUtil.exe   “C:\为MyService \ MyService.exe”

而不是

  

C:\ Windows \ Microsoft.NET \框架\ v4.0.30319 \ InstallUtil.exe   “C:\为MyService \ MyService.exe”

答案 3 :(得分:5)

由于只有一个版本的运行时可以加载到进程中(尽管正如其他人提到的那样,向后加载 - 4.0加载2.0 - 没关系),你有几个选择:

  • 升级.Net 2.0项目
  • 包装.Net 2.0项目(如果源不是你的)
  • 降级.Net 4.0项目
  • 将.Net 4.0项目加载到它自己的进程中(我相信这可行 - 但需要花费一些力气,IMO)

答案 4 :(得分:5)

  

您必须将.NET 2项目升级到.NET 4,或将.NET 4项目降级到.NET 3.5(或更早版本)。

如何升级.net版本?我不知道在哪里指明什么。请帮忙。

编辑: 我自己找到了答案。选择项目,右键单击并选择“属性页”。在那里你可以选择框架版本。或选择项目并单击 Shift + F4

答案 5 :(得分:3)

有趣的是,我一直收到这个错误。修复它的原因是在与gacutil.exe相同的目录中创建一个名为 gacutil.exe.config 的配置。配置内容(文本文件)是:

<?xml version ="1.0"?> <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
    </startup> </configuration>

我在这里张贴这个以供参考,并询问是否有人知道幕后实际发生了什么。我并没有声称这是“正确”的做法

答案 6 :(得分:2)

&#34; C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0&#34; 中的 INSTALL_UTIL_HOME 目录更改为&#34;用于安装服务的C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319&#34; 。此错误主要发生在版本不匹配上。

答案 7 :(得分:2)

我也遇到了这个错误,但我的问题是我使用的是GACUTIL.EXE的旧版本。

一旦我安装了最新的GACUTIL版本的.NET,就可以了。

该错误具有误导性,因为它使您看起来像是您尝试注册的DLL不正确。

答案 8 :(得分:1)

将错误的.NET框架版本选为IIS中的默认版本也可能会触发此错误。

单击 Connections 视图下的根节点(位于左侧),然后从 Actions 更改.NET Framework版本 >查看(在右侧),然后从下拉列表中选择适当的.NET版本。

答案 9 :(得分:0)

它的.net版本不匹配,所以尝试从app.config或web.config中更改为。 通常具有比更低的框架更高的框架,因为当我们将系统的dll添加到较低版本的内置.net应用程序时因此它将无法工作因此只需更改为更高版本

答案 10 :(得分:0)

错误是由于我在IIS中配置应用程序池的方式。

我的网络服务使用为v2.0.50727配置的应用工具。这导致了错误消息。

当我将其更改为v4.0.30319时,我没有收到错误。

答案 11 :(得分:0)

当我更改了承载特定项目的应用程序池的.Net框架工作版本时,我能够解决此特定问题。

应用程序池->高级设置-> .Net框架工作版本(从v2.0更改为v4.0)