当A针对.NET 3.5并且B针对.NET 2.0时,Visual Studio 2008确实允许您从程序集B
引用程序集A
。Visual Studio 2010:参考程序集针对高框架版本
Visual Studio 2010不允许使用此功能。完整的问题上MSDN描述:
您可以创建应用程序, 参考项目或组件是 目标不同版本的.NET框架 的。例如,如果您创建的目标为.NET Framework的客户端配置文件的 应用程序,该012xx项目可以引用一个程序集,该程序集的目标是.NET Framework 2.0版。 但是,如果你创建 目标的较早版本的.NET框架 的,你不能在项目中的 基准设定为一个项目 或组装面向.NET框架 4客户端配置文件或项目。 NET Framework 4。为了消除错误, 确保 您的应用程序所针对的配置文件与 兼容 或您的 应用程序所引用的程序集所针对的配置文件。
有没有什么办法可以让VS2010在这方面表现得像VS2008(即允许引用程序集指向更高的框架版本)?
我知道VS 2010行为背后的原因以及我需要注意的部署注意事项,无需重复说明。
确切的错误是:
警告MSB3268:主要参考 “xxx.dll” 无法得到解决,因为它有 对 框架组件的间接依赖“System.Core程序, 版本= 3.5.0.0,文化=中立, PublicKeyToken = b77a5c561934e089“其中 不能在当前的 目标框架中解决。 “.NETFramework,Version = v2.0”。为了 解决此问题,请删除 参考 “xxx.dll” 或重新定位你的应用程序包含 “System.Core程序一个 框架版本,版本= 3.5.0.0, 文化=中立, 公钥= b77a5c561934e089 ”。
我有点不知所措,为什么你想这样做。那么整个应用程序会不会要求更高版本的框架才能启动?在这种情况下,将目标版本升级到更高版本没有意义吗? – cHao 2010-07-21 11:24:23
这很难解释,但背后有一个合理的要求。 – 2010-07-21 11:39:59
合理要求:由2.0 ASP.NET站点和3.5 WinForms应用程序共享的业务逻辑汇编(“BL”)。网站使用较旧的Enterprise Library 3.1,WinForms应用程序使用较新的EntLib 5.0。当为WinForms构建时,BL需要将引用切换到新的EntLib,它们是3.5,但BL仍然需要2.0项目才能与现有的2.0网站一起工作。 VS2008允许通过切换配置来发生这种情况,但VS2010引发上述错误,因为EntLib 5.0期望3.5引用(特别是System.Core)。 – 2011-10-17 14:36:42