我收到错误:“此程序集由比当前加载的运行时更新的运行时构建,无法加载。”
我有一个由.NET 2.0项目调用的.NET 4.0 DLL项目。有没有办法调和框架中的差异?
答案 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 - 没关系),你有几个选择:
答案 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)