将 C# 项目从 VS 2005 移动到 VS 2013 后出现编译器错误
Posted
技术标签:
【中文标题】将 C# 项目从 VS 2005 移动到 VS 2013 后出现编译器错误【英文标题】:Compiler error after moving C# project from VS 2005 to VS 2013 【发布时间】:2015-01-25 00:10:11 【问题描述】:在将 C# 项目从 VS 2005 转换为 VS 2013 后,我遇到了一个问题:
C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1635,5):警告 MSB3268:无法解析主要引用 [程序集引用],因为它具有间接对在当前目标框架中无法解决的框架程序集“System.Core”的依赖。 “.NETFramework,版本=v2.0”。要解决此问题,请删除引用 [程序集] 或将您的应用程序重新定位到包含 [程序集] 的框架版本
This question 有同样的问题,但解决方案对我不起作用(使用 <SpecificVersion>true</SpecificVersion>
)
结果:项目不再编译(在VS 2005下没有问题)
我不知道该怎么做,所以欢迎任何提示......
编辑 我想继续使用框架 2.0。
编辑 #2 该项目引用了同样针对 2.0 的第三方程序集
【问题讨论】:
Visual Studio 有它的方法可以将项目文件转换为正确地重新定位从不版本的 .net 框架。在 Visual Studio 中打开项目属性并直接在 Application 选项卡下更改 Target framework。 :-) 如果这不起作用,那么另一种方法可能是创建一个新项目并将现有源代码添加到这个新项目中。然后添加必要的引用。 转到您在此解决方案中的每个项目并检查其属性,确保每个项目中使用的“框架”都相同。请注意,4.5.1 与 4.5 不同,依此类推。 您是否将项目设置为针对 2.0 框架? Instructions here 您必须避免混淆程序集名称才能获得答案。 @HansPassant:你说得对,我解决了这个问题。这是关于 System.Core (3.5) 【参考方案1】:有一个类似的问题(同样的警告信息,不同的程序集),我发现了一个
<bindingRedirect ... />
在与无法解析的程序集关联的 web.config 中。删除 bindingRedirect 解决了我的问题。
【讨论】:
以上是关于将 C# 项目从 VS 2005 移动到 VS 2013 后出现编译器错误的主要内容,如果未能解决你的问题,请参考以下文章
将桌面快捷方式部署到运行 Windows CE 4.2 (VS2005) 的设备
将解决方案 C++ 从 VS2005 升级到 VS2012 出现错误 LNK1181
将 C++ 项目升级到 VS2010,现在得到 AccessViolationException