我收到错误消息:“此程序集由比当前加载的运行时更新的运行时构建,无法加载。”
我有一个 .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 应用程序时,它不会工作,因此只需更改为更高版本