RJ *_*han 14 c# projects-and-solutions postsharp visual-studio-2010
我想知道如何确定此构建错误的来源;
Warning 4   The primary reference "MyNamespace.MyProject" could not be resolved because 
   it has an indirect dependency on the .NET Framework assembly "System.Xml, Version=4.0.0.0,
   Culture=neutral, PublicKeyToken=b77a5c561934e089" which has a higher version "4.0.0.0" than
   the version "2.0.0.0" in the current target framework.   MyNamespace.MyOtherProject
我理解这个错误的意思(以及其他5个同样的项目),但我无法解决如何在我的情况下解决它.在这种情况下,"主要引用"(MyNamespace.MyProject)与.NET 4.0.x没有直接的依赖关系.
主要参考仅依赖于我的另一个项目(MyNamespace.MyCoreProject),构建的源项目(MyNamespace.MyOtherProject)也直接依赖于该项目.构建并没有抱怨该项目间接引用.NET 4.0.x,所以我认为我可以排除这一点.
主要引用直接依赖于三(3)个第三方DLL,所有这些DLL也都是Target .NET 2.0.
我已经使用dotPeek来检查构建的库,并且看不到任何使用.NET 4.0的引用.
工作中唯一的另一个潜在扳手是PostSharp的使用,它直接由'MyNamespace.MyCoreProject'引用(由主参考项目引用),这可能导致问题,因为我相信有一个相关的VS2010错误引用PostSharp.dll(http://www.sharpcrafters.com/forum/Topic4444-4-1.aspx#bm4462),但我也从构建链中删除了它仍然看到此错误,所以我假设我也可以统治那个.
如果有人能告诉我为什么会这样,真棒!如果没有,关于如何弄清楚不受干扰的"间接参考"的一些方向将同样有用!
顺便说一下,我已经尝试了以下所有工具来获取一些信息,但它们并没有告诉我很多我还不知道(这是有问题的DLL的直接依赖性); - .NET Reflector - dotPeek - IldAsm - 取决于(Dependency Walker)
虽然我实际上没有找到一个好方法来实际解决确定MsBuild如何确定它所使用的引用的问题(为什么它不只是告诉我它是如何产生这些间接引用的,而不是让我猜我没有知道...)我已经解决了我的问题.
最后,我基本上删除了"主要参考"项目中的所有引用(这需要逐个排除所有代码 - 这是一个有点痛苦的过程)来确定所谓的.NET 4.0库的间接引用的来源是由引用的第三方DLL.
但是,我确实认为MsBuild在这个问题背后有一个错误,因为;
现在,另一个好奇心是我在一段时间内没有触及或改变相关的库,所以这已经开始发生了一些其他无关的原因 - 可能是什么,我不知道.
最终,唯一的办法,我发现解决这个问题是运行GACUTIL/U每个相关库中删除的4.0林达以前安装/使用的版本.(包中大约有40个,所以这也很痛苦!因为软件包的卸载程序没有删除GAC中的库)
这似乎让msbuild开始使用我告诉它的引用,而不是想出"使用这个文件"和"使用这个特定版本意味着什么" .
解决了,但我会喜欢更清洁的方式来做到这一点!
| 归档时间: | 
 | 
| 查看次数: | 15429 次 | 
| 最近记录: |