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

问题描述 投票:48回答:12

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

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

c# dll .net-4.0 .net-2.0
12个回答
46
投票

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

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

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


0
投票

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


0
投票

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

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

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


0
投票

当我更改托管特定项目的App池的.Net框架工作版本时,我能够解决此特定问题。

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


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文件。


8
投票

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

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

代替

C:yuwindsumicerosoftware.Netfumevorkjuvch.0.30319installutil.ec“C:yumuservicejumuservice.ek”


5
投票

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

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

5
投票

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

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

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


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>

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


2
投票

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


2
投票

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

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

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


1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.