【发布时间】:2010-07-21 11:12:38
【问题描述】:
当 A 面向 .NET 3.5 而 B 面向 .NET 2.0 时,Visual Studio 2008 允许您从程序集 B 引用程序集 A。
Visual Studio 2010 不再允许这样做。完整的问题描述在MSDN:
您可以创建应用程序 引用项目或程序集 针对不同版本的 .NET 框架。例如,如果您创建 面向 .NET 的应用程序 框架 4 客户端配置文件,即 项目可以引用一个程序集 针对 .NET Framework 2.0 版。 但是,如果您创建一个项目 针对早期版本的 .NET 框架,您不能设置 在该项目中对项目的引用 或以 .NET 为目标的程序集 Framework 4 客户端配置文件或 .NET 框架 4。为了消除错误, 确保配置文件的目标 您的应用程序兼容 项目所针对的个人资料 或您引用的程序集 应用。
有什么方法可以让 VS2010 在这方面表现得像 VS2008(即允许引用针对更高框架版本的程序集)?
我知道 VS 2010 行为背后的原因以及我需要注意的部署注意事项,无需重复。
确切的错误是:
警告 MSB3268:主要参考 “xxx.dll” 无法解决,因为它有 间接依赖于 框架组件“System.Core, 版本=3.5.0.0,文化=中性, PublicKeyToken=b77a5c561934e089" 其中 目前无法解决 有针对性的框架。 “.NETFramework,版本=v2.0”。到 解决这个问题,要么删除 参考资料 “xxx.dll” 或将您的应用程序重新定位到 包含的框架版本 “System.Core,版本=3.5.0.0, 文化=中性, PublicKeyToken=b77a5c561934e089"。
【问题讨论】:
-
我有点不明白你为什么要这么做。整个应用程序是否不需要更高版本的框架才能启动?在这种情况下,定位更高版本是否有意义?
-
这很难解释,但背后有一个合理的要求。
-
合理要求:由 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)。
标签: visual-studio-2010 reference assemblies