2012-11-12 80 views
6

我最近将我的解决方案从使用vs2010 pro sp1的主开发机器移至新机器。该设置应该是相同的,除了它没有建立。构建错误,警告MSB3258

它给人这样的错误

C:\ WINDOWS \ Microsoft.NET \框架\ 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 “在当前目标框架中具有比版本”2.0.0.0“更高的版本”4.0.0.0“。

但是,所有有问题的库都设置为使用.net 2框架,我需要这样做,否则它会打破使用它们的东西。

但由于某种原因,它似乎认为我的.net 2系统库以某种方式引用.net 4的东西。所有被引用的lib .NET 2

你可以看到我的生成输出这里

http://tinyurl.com/bnugru4

+0

与'ikasDAL.dll'有关的事情 – codingbiz

+1

'ikasDAL'是你的一个项目吗?它提到了什么? –

回答

2

我使用CopyLocal项目参考和改变目标框架时看到这个问题(即.NET 4到2)上的依赖项目(即ikasDAL.dll)。

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

+0

感谢您提供此信息,尽管它没有直接帮助,但却让我朝着正确的方向前进。事实证明,我的DAL类lib引用了mysql.data.dll。出于某种原因,为MySQL lib设置CopyLocal为true使所有问题消失。 – Steed

+0

这可能是因为你已经在你机器的全局程序集缓存中安装了一个.NET 4.0目标版本的mysql.data.dll。 CopyLocal强制您的构建过程在bin文件夹中使用正确的构建过程。 – abto

0

从日志看来,确实看起来像是有人在4.0中编写了ikasDAL.dll,因为它依赖于System.Xml.Linq等东西,而这些东西并不存在于2.0框架中。

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

或者,ikasDAL最近设置为4.0,您已将其重置为2.0,但未修复它的依赖关系。


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