.net – 解析MSB3247 – 发现同一依赖程序集的不同版本之间的冲突

前端之家收集整理的这篇文章主要介绍了.net – 解析MSB3247 – 发现同一依赖程序集的不同版本之间的冲突前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
.NET 3.5解决方案在使用msbuild编译时出现此警告。

有时NDepend可能会帮助,但在这种情况下,它没有给任何进一步的细节。 Like Bob我最终不得不求助于打开ILDASM中的每个程序集,直到我找到一个参考较早版本的依赖程序集。

我没有尝试从VS 2010 Beta 2使用MSBUILD(因为Connect文章指出这是修复在下一版本的CLR),但没有提供任何更多的细节(也许固定后Beta 2)

有更好的(更自动化)方法吗?

将“MSBuild项目构建输出详细程度”更改为“详细”或更高版本。为此,请按照下列步骤操作:

>打开选项对话框(工具 – >选项…)。
>在左侧树中,选择“项目和解决方案”节点,然后选择“构建并运行”。

>注意:如果此节点未显示,请确保选中了显示所有设置对话框底部的复选框。

>在出现的工具/选项页面中,根据您的版本将MSBuild项目生成输出详细程度级别设置为适当的设置:

> VS2012,VS2013或VS2015上的诊断(这些版本中的消息说您应该使用“详细”,but this is plain wrong,you should use “Diagnostics”)
>详细当你在VS2010
>正常将足以在VS2008或更老。

>构建项目并在输出窗口中查看。

查看MSBuild消息。 ResolveAssemblyReferences任务(这是MSB3247源自的任务)应该可以帮助您调试此特定问题。

我的具体情况是不正确的引用sqlServerCe。见下文。我有两个项目引用两个不同版本的sqlServerCe。我去了老项目的项目,删除了引用,然后添加了正确的引用。

Target ResolveAssemblyReferences:
    Consider app.config remapping of assembly "System.Data.sqlServerCe,..." 
        from Version "3.5.1.0" [H:\...\Debug\System.Data.sqlServerCe.dll] 
        to Version "9.0.242.0" [C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PublicAssemblies\System.Data.sqlServerCe.dll]
        to solve conflict and get rid of warning.
    C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : 
        warning MSB3247: Found conflicts between different versions of the same dependent assembly.

您不必打开每个程序集以确定引用程序集的版本。

>您可以检查每个参考的属性。>打开项目属性并检查“参考”部分的版本。>使用文本编辑器打开项目。>使用.Net反射器。

猜你在找的设计模式相关文章