为什么.NET 4.0项目无法引用4.5程序集?

13

我正在开发一个以.NET 4.0为目标的项目,现在需要引用一个以.NET 4.5为目标构建的第三方dll文件。但是似乎Visual Studio无法接受这样的引用?为什么呢?VS向我显示该dll名称在当前上下文中不存在。

4个回答

15

因为你正在引用较高版本,微软可以向后兼容,但不能“向前兼容”。你需要将整个项目转换到更高的版本中,才能使用该二进制文件。

不知道你具体谈论的是哪种技术,但如果是asp.net,请注意在vNext中,您可以在服务器上部署自己的版本的云clr。因此,您可能会有两个版本的应用程序,一个定位于4.5,另一个定位于4.0

介绍vNext。重申一遍,如果您关注此事。


7
一个面向.NET 4.0的项目可以在4.0运行时上运行,但是一个面向.NET 4.5的DLL则不行。
如果允许的话,您将能够构建在4.0中工作的项目,并且在尝试加载4.5组件时失败。
您可以引用相反方向的内容; 因为4.0的DLL可以在4.5运行时上加载。
您需要从第三方请求一个4.0版本的DLL,或者将目标定为.NET 4.5。

2
应用程序域将在4.0运行时下运行,因此无法引用更新的dotnet版本,只有相反的情况是正确的。
4.5是一个不同的.net运行时,因此不能在旧版本中加载4.5。
您必须记住,运行时需要将中间语言(IL)解释为机器代码。如果IL是在4.5上创建的,则4.0运行时将不知道如何解释它。

2
创建一个4.5版本的控制台应用程序,然后从4.0版本中执行cmd命令来获取所需的数据,这可能是一种快速解决方案。虽然不是最好的方法,但它能完成工作 :)

你可以使用Windows IPC机制之一在进程间进行通信。(例如,我喜欢IpcServerChannel)。 - xmedeko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接