我有一个.NET 4.0的dll项目被.NET 2.0的项目调用。有没有一种方法来协调框架之间的差异?
我有一个.NET 4.0的dll项目,它被一个.NET 2.0的项目调用。有没有办法解决框架上的差异?
很遗憾,不能这样做。.NET 4 CLR可以加载.NET 2程序集(通常情况下可以,但有一些例外情况,例如混合模式程序集),但反过来是不可以的。
您需要将.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文件没有提交到我们的仓库进行更改。为了解决这个问题,我将框架更改为其他版本,然后再更改回v4.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 - 是可以的),您有几个选择:
有趣的是,我一直遇到这个错误。对我有用的解决方法是在与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>
我在这里发布此内容供参考,并询问是否有人知道实际发生的情况。我不是声称这是"正确"的做法。
GACUTIL.EXE
。.NET
并使用正确的 GACUTIL
后,它就正常工作了。更改INSTALL_UTIL_HOME
目录,从C:\WINDOWS\Microsoft.NET\Framework\v2.0
更改为C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
以安装服务。此错误主要是由版本不匹配引起的。