构建错误,警告MSB3258

时间:2012-11-12 22:15:08

标签: c# msbuild build-error

我最近使用vs2010 pro sp1将我的解决方案从我的主开发机器移到新机器上。除了无法构建之外,设置应该是相同的。

它给出错误,如

  

c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(1360,9):警告MSB3258:主要参考“C:\ rep \ hms \ trunk \ ikassystemv3 \ ikasDAL \ bin \ Debug \ ikasDAL.dll“无法解析,因为它对.NET Framework程序集”mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089“具有更高版本”4.0.0.0“的间接依赖性比当前目标框架中的版本“2.0.0.0”。

然而,所有相关的库都设置为使用.net 2框架,我需要这样做,否则会破坏使用它们的东西。

然而由于某种原因,它似乎认为我的.net 2系统库以某种方式引用.net 4的东西。所有引用的库都是.net 2

您可以在此处查看我的构建输出

  

http://tinyurl.com/bnugru4

2 个答案:

答案 0 :(得分:2)

在使用CopyLocal项目引用并在依赖项目(即ikasDAL.dll)上更改目标框架(即.NET 4到2)时,我已经看到了这个问题。

如果是这种情况,删除输出文件夹(即C:\ rep \ hms \ trunk \ ikassystemv3 \ ikasDAL \ bin \ Debug)并重建应修复整个事情。

答案 1 :(得分:0)

从日志中可以看出有人在4.0中编写了ikasDAL.dll,因为它依赖于System.Xml.Linq之类的东西,这在2.0框架中是不存在的。

从各方面来看,我会说有人人为地将ikasDAL.dll设置为2.0而没有意识到它依赖于什么。如果是这种情况,那么我认为你有一个更大的问题。

或者,最近将ikasDAL设置为4.0并将其重置为2.0,但未修复它的依赖项。


我首先手动清理所有bin目录(基本上删除它们)。然后我会查看每个单独的项目,以确保它确实设置为2.0。最后,我将逐个构建每个项目,直到遇到问题。