【发布时间】:2012-06-06 00:02:11
【问题描述】:
我想知道如何确定此构建错误的来源;
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) 个第 3 方 DLL,所有这些 DLL 也都以 .NET 2.0 为目标。
我已经使用 dotPeek 检查构建的库,并且看不到对使用 .NET 4.0 的任何内容的任何引用。
作品中唯一的其他潜在扳手是使用 PostSharp,它被 'MyNamespace.MyCoreProject' 直接引用(由主要参考项目引用),这可能会导致问题,因为我相信有一个相关的引用 PostSharp.dll 时出现 VS2010 错误(http://www.sharpcrafters.com/forum/Topic4444-4-1.aspx#bm4462),但是我也从构建链中删除了它,仍然看到这个错误,所以我假设我也可以排除那个。
如果有人能告诉我为什么会这样,太棒了!如果没有,关于如何确定未命名的“间接引用”是什么的一些指导将同样有帮助!
顺便说一句,我已经尝试了以下所有工具来获取一些信息,但它们并没有告诉我很多我还不知道的信息(这是相关 DLL 的直接依赖项); - .NET 反射器 - 点窥 - IldAsm - 依赖(依赖步行者)
【问题讨论】:
-
仅仅因为它没有引用任何 4.0 代码,并不意味着它不需要运行 4.0 二进制文件。
-
@ColeJohnson 如果什么都不依赖于 4.0 框架,那么我不需要 4.0 框架。我正在尝试找出需要 4.0 的内容。
-
你去项目的属性里改过依赖框架了吗?
-
看起来您有一个针对 .net2 构建的项目,该项目引用了一些 v4 程序集。查看参考资料,检查其中每一项的属性,其中一项或多项将是 v4。删除并替换为 .net 2 版本。
-
@ColeJohnson my 代码中的所有内容都针对 3.5(即 .NET 2.0 CLR)。
标签: c# visual-studio-2010 projects-and-solutions postsharp