58

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

我有一个 .NET 2.0 项目正在调用的 .NET 4.0 dll 项目。有没有办法调和框架的差异?

4

12 回答 12

50

我有一个 .NET 2.0 项目正在调用的 .NET 4.0 dll 项目。有没有办法调和框架的差异?

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

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

于 2012-05-15T18:59:35.400 回答
13

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

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

本来应该

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

项目选项卡正确显示了 v4.0,但 app.config 并未通过该更改提交到我们的存储库。为了修复它,我将框架更改为其他内容并再次返回到 4.0,这更新了我的 app.config 文件。

于 2016-06-13T20:57:12.210 回答
9

我得到了同样的错误信息。我在给

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe "C:\MyService\MyService.exe"

代替

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe "C:\MyService\MyService.exe"

于 2015-09-11T18:50:42.687 回答
6

由于只能将一个版本的运行时加载到进程中(尽管正如其他人所暗示的那样,向后加载 - 4.0 加载 2.0 - 是可以的),您有几个选择:

  • 升级 .Net 2.0 项目
  • 包装 .Net 2.0 项目(如果源不是你的)
  • 降级 .Net 4.0 项目
  • 将 .Net 4.0 项目加载到它自己的进程中(我相信这可以工作 - 但需要一些努力,IMO)
于 2012-05-15T19:04:25.460 回答
5

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

你如何升级.net版本?我不确定在哪里以及要指定什么。请帮忙。

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

于 2013-01-25T12:09:13.977 回答
4

有趣的是,我一直收到这个错误。为我解决的问题是在与 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>

我在此处发布此内容以供参考,并询问是否有人知道引擎盖下实际发生的事情。我并不是说这是“正确”的做法

于 2016-05-12T22:43:40.287 回答
2

INSTALL_UTIL_HOME将目录从更改C:\WINDOWS\Microsoft.NET\Framework\v2.0C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319以安装服务。此错误主要发生在版本不匹配。

于 2015-09-07T08:49:20.693 回答
2

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

一旦我安装了正确GACUTIL的最新.NET版本,它就可以正常工作。

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

于 2015-12-17T19:02:16.207 回答
1

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

单击Connections视图下的根节点(左侧),然后从Actions视图(右侧)中选择Change .NET Framework Version,然后从下拉列表中选择适当的 .NET 版本。

于 2016-08-22T23:23:43.567 回答
1

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

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

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

于 2017-08-11T15:45:55.390 回答
1

当我更改托管特定项目的应用程序池的 .Net 框架版本时,我能够解决这个特定问题。

应用程序池 -> 高级设置 -> .Net frame work 版本(将 v2.0 更改为 v4.0)

于 2019-01-15T06:41:27.187 回答
0

它的 .net 版本与 dll 不匹配,因此请尝试在 app.config 或 web.config 中更改为 from。通常有更高的框架而不是更低的框架,因为当我们将系统的 dll 添加到低版本构建的 .net 应用程序时,它不会工作,因此只需更改为更高版本

于 2016-04-04T10:14:20.133 回答