我收到错误消息:“此程序集由比当前加载的运行时更新的运行时构建,无法加载。”
我有一个 .NET 2.0 项目正在调用的 .NET 4.0 dll 项目。有没有办法调和框架的差异?
我有一个 .NET 2.0 项目正在调用的 .NET 4.0 dll 项目。有没有办法调和框架的差异?
不是那样的,不。.NET 4 CLR 可以加载 .NET 2 程序集(通常 - 混合模式程序集有一些例外,IIRC),但反之则不然。
您必须将 .NET 2 项目升级到 .NET 4,或者将 .NET 4 项目降级到 .NET 3.5(或更早版本)。
如果您已经尝试过此页面上的所有其他逻辑解决方案,请仔细检查。在我的 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 文件。
我得到了同样的错误信息。我在给
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"
由于只能将一个版本的运行时加载到进程中(尽管正如其他人所暗示的那样,向后加载 - 4.0 加载 2.0 - 是可以的),您有几个选择:
您必须将 .NET 2 项目升级到 .NET 4,或者将 .NET 4 项目降级到 .NET 3.5(或更早版本)。
你如何升级.net版本?我不确定在哪里以及要指定什么。请帮忙。
编辑:我自己找到了答案。选择项目,右键单击并选择属性页。在那里您可以选择框架版本。或选择项目并单击Shift+F4
有趣的是,我一直收到这个错误。为我解决的问题是在与 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>
我在此处发布此内容以供参考,并询问是否有人知道引擎盖下实际发生的事情。我并不是说这是“正确”的做法
INSTALL_UTIL_HOME将目录从更改C:\WINDOWS\Microsoft.NET\Framework\v2.0为C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319以安装服务。此错误主要发生在版本不匹配。
我也遇到了这个错误,但我的问题是我使用的是旧版本的GACUTIL.EXE.
一旦我安装了正确GACUTIL的最新.NET版本,它就可以正常工作。
该错误具有误导性,因为它看起来像是您尝试注册的 DLL 不正确。
将错误的 .NET 框架版本选为 IIS 中的默认值也可能会触发此错误。
单击Connections视图下的根节点(左侧),然后从Actions视图(右侧)中选择Change .NET Framework Version,然后从下拉列表中选择适当的 .NET 版本。
该错误是由于我在 IIS 中配置应用程序池的方式造成的。
我的 Web 服务使用为 v2.0.50727 配置的应用程序工具。这导致了错误消息。
当我将其更改为 v4.0.30319 时,我没有收到错误消息。
当我更改托管特定项目的应用程序池的 .Net 框架版本时,我能够解决这个特定问题。
应用程序池 -> 高级设置 -> .Net frame work 版本(将 v2.0 更改为 v4.0)
它的 .net 版本与 dll 不匹配,因此请尝试在 app.config 或 web.config 中更改为 from。通常有更高的框架而不是更低的框架,因为当我们将系统的 dll 添加到低版本构建的 .net 应用程序时,它不会工作,因此只需更改为更高版本