.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”) >构建项目并在输出窗口中查看。 查看MSBuild消息。 ResolveAssemblyReferences任务(这是MSB3247源自的任务)应该可以帮助您调试此特定问题。 我的具体情况是不正确的引用SqlServerCe。见下文。我有两个项目引用两个不同版本的SqlServerCe。我去了老项目的项目,删除了引用,然后添加了正确的引用。 Target ResolveAssemblyReferences: Consider app.config remapping of assembly "System.Data.SqlServerCe,..." from Version "3.5.1.0" [H:...DebugSystem.Data.SqlServerCe.dll] to Version "9.0.242.0" [C:Program FilesMicrosoft Visual Studio 8Common7IDEPublicAssembliesSystem.Data.SqlServerCe.dll] to solve conflict and get rid of warning. C:WINDOWSMicrosoft.NETFrameworkv3.5Microsoft.Common.targets : warning MSB3247: Found conflicts between different versions of the same dependent assembly. 您不必打开每个程序集以确定引用程序集的版本。 >您可以检查每个参考的属性。>打开项目属性并检查“参考”部分的版本。>使用文本编辑器打开项目。>使用.Net反射器。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |