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

Nic*_*ers 51 c# dll .net-4.0 .net-2.0

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

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

Jon*_*eet 46

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

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

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


Zig*_*ler 8

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

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"


小智 8

如果您已经尝试过此页面上的所有其他逻辑解决方案,请仔细检查一下.在我的app.config中,我有一个旧框架的引用.

<startup>
  <supportedRuntime version="v2.0.50727"/>
</startup>
Run Code Online (Sandbox Code Playgroud)

本来应该

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
Run Code Online (Sandbox Code Playgroud)

项目选项卡正确显示了v4.0,但app.config没有提交到我们的repo进行更改.为了解决这个问题,我将框架更改为其他内容并再次返回4.0,这更新了我的app.config文件.


IAb*_*act 5

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

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


Adi*_*jaj 5

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

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

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