首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解决同一依赖程序集的不同版本之间发现的MSB3247冲突

解决同一依赖程序集的不同版本之间发现的MSB3247冲突
EN

Stack Overflow用户
提问于 2009-12-09 09:28:07
回答 16查看 208.8K关注 0票数 432

.NET 3.5解决方案在使用msbuild进行编译时出现此警告。

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

我确实试过使用VS2010Beta2中的MSBUILD (正如Connect文章指出的那样,这在下一个版本的CLR中已经修复了),但也没有提供更多细节(可能是Beta2之后的修复)

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

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2010-01-31 05:23:57

将"MSBuild项目构建输出详细程度“更改为"Detailed”或更高。要执行此操作,请执行以下步骤:

和解决方案打开选项对话框(工具和左侧树,选择项目和解决方案节点,然后选择Build Run。显示所有设置注意:如果此节点未显示,请确保对话框底部的复选框checked.

  • (显示所有设置

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

代码语言:javascript
运行
复制
- **Diagnostics** when on VS2012, VS2013 or VS2015 (the message in these versions _says_ you should use "Detailed", [but this is plain wrong, you should use "Diagnostics"](https://stackoverflow.com/a/25749689/111575))
- **Detailed** when you're on VS2010
- **Normal** will suffice in VS2008 or older.

  1. 生成项目并查看“输出”窗口。

查看MSBuild消息。ResolveAssemblyReferences任务是产生MSB3247的任务,它可以帮助您调试这个特定问题。

我的具体案例是对SqlServerCe的错误引用。见下文。我有两个项目引用了两个不同版本的SqlServerCe。我转到使用旧版本的项目,删除引用,然后添加正确的引用。

代码语言:javascript
运行
复制
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.

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

使用文本编辑器,您可以检查每个Reference.

  • Open的属性项目属性以及项目引用的版本。

  • 使用.Net

票数 584
EN

Stack Overflow用户

发布于 2012-03-31 04:35:19

Mike Hadlow的posted a little console app called AsmSpy很好地列出了每个程序集的引用:

代码语言:javascript
运行
复制
Reference: System.Net.Http.Formatting
        4.0.0.0 by Shared.MessageStack
        4.0.0.0 by System.Web.Http

Reference: System.Net.Http
        2.0.0.0 by Shared.MessageStack
        2.0.0.0 by System.Net.Http.Formatting
        4.0.0.0 by System.Net.Http.WebRequest
        2.0.0.0 by System.Web.Http.Common
        2.0.0.0 by System.Web.Http
        2.0.0.0 by System.Web.Http.WebHost

与依赖于MSBuild输出相比,这是一种更快地了解警告MSB3247的方法。

票数 140
EN

Stack Overflow用户

发布于 2015-09-11 05:07:51

有时候@AMissico的答案是不够的。在我的例子中,我在输出窗口中找不到错误,所以我决定创建一个日志文件并对其进行分析,执行以下步骤:

  1. 正在将生成日志保存到文件...https://msdn.microsoft.com/en-us/library/ms171470.aspx

msbuild MyProject.proj /fl /flp:logfile=MyProjectOutput.log;verbosity=detailed

  • Find文本:warning MS...或特定警告信息:(例如,第9293行) Found conflicts between different versions...和冲突错误的完整详细信息将位于此消息的上方(例如,第9277行) There was a conflicts between...

Visual Studio 2013

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1871073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档