为什么添加对项目定位.NET Framework 4.0的引用失败?

时间:2010-04-01 03:34:24

标签: .net visual-studio visual-studio-2010 .net-4.0

我们有两个项目都是类库。 Project 1是VS 2008项目,面向.NET Framework 3.5。 Project 2是一个针对.NET Framework 4.0的VS 2010(候选版本)项目。当我尝试在项目1中添加对项目2的引用时,它失败并且信息不足以提供信息。我知道如果我将Project 2的目标框架更改为3.5,那么添加引用将起作用。我的问题是,如果我不更改目标框架,但将Project 1转换为VS 2010,那么引用会起作用吗?换句话说,针对不同框架版本的类库之间是否存在一些固有的不兼容性,还是因为VS 2008不了解4.0框架而导致它失败?

3 个答案:

答案 0 :(得分:7)

是的,这是一个问题。就像您无法从.NET 1.0或1.1项目添加对.NET 2.0程序集的引用一样。 .NET 4.0是框架(CLR)的新运行时版本。 .NET 3.5和3.0版本都使用框架的2.0 运行时版本(CLR)。

您始终可以将使用较新运行时构建的程序集中的引用添加到具有较旧运行时的程序集,但不能相反。

从.NET 2.0(3.0和3.5):
*可以参考.NET 2.0(3.0和3.5)程序集
*不能引用.NET 4.0程序集

从.NET 4.0开始:
*可以参考.NET 4.0程序集 *可以引用.NET 2.0(3.0和3.5)程序集

答案 1 :(得分:2)

框架版本2,3.0,3.5在CLR版本2上运行,而框架版本4在CLR版本4上运行:版本2 CLR不会加载一个表明它需要CLR 4的程序集,因此Visual Studio正在尝试(严重的是,听起来好像告诉你的那样。所以,回答你的问题,是的,如果你将你的项目1更新到VS 2010并将目标框架更改为版本4(默认情况下这是C ++项目,而不是C#/ VB.NET),它将能够参考项目2。

答案 2 :(得分:0)

如果你想从针对.net framework 3.5的程序集中使用针对.net框架4的程序集,你可以通过COM导出程序集(.net框架4)并将其导入到程序集.net框架3.5。

抱歉我的英语不好。