当我清理并构建具有多个项目的解决方案时,输出窗口将报告构建成功。然而,当我查看错误列表窗口时,它向我显示了这样的警告:

发现同一依赖程序集的不同版本之间存在无法解决的冲突。当日志详细信息设置为detailed时,这些引用冲突将在生成日志中列出。C:\Program Files (x86)\MSBuild\12.0\bin\ Microsoft.Common.CurrentVersion.targets

当我双击此消息时,它将打开C:\Program Files (x86)\MSBuild\12.0\bin\ Microsoft.Common.CurrentVersion。目标文件,但我不明白任何东西在它。

我正在使用Visual Studio Express 2013的Web。

我如何找出什么是错误的,与哪个DLL,然后我如何使警告消失?


当前回答

重申@elshev的评论 右键单击解决方案->管理解决方案->的NuGet包在巩固下,你可以看到是否有不同版本的相同的包被安装。在那里更新包。解决冲突错误。

其他回答

eta: SO自己的@Nick Craver写了一篇关于这方面的杀手级文章,你应该读一下


虽然其他的回答是这样说的,但他们并没有明确表示,所以我将....

在VS2013.2上,要真正触发引用信息的发射,您不需要阅读消息,它说:

C:\Program Files (x86)\MSBuild\12.0\bin\ Microsoft.Common.CurrentVersion.targets(1697,5):警告MSB3277:发现同一依赖程序集的不同版本之间存在无法解决的冲突。当日志详细信息设置为detailed时,这些引用冲突将在生成日志中列出。

这是不正确的(或者至少在某些版本的Visual Studio中是这样的——在VS2015更新3或更高的版本中似乎是可以的)。相反,将其转到诊断(从工具->选项->项目和解决方案->构建和运行,设置MSBuild项目构建输出verbose),这时你会看到如下消息:

“牛顿软”和“牛顿软”之间存在冲突。Json,版本=6.0.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed"和"牛顿软。Json,版本=6.0.5.17707,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed"。 “Newtonsoft。Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”被选中是因为它是primary和“Newtonsoft. Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”。Json,版本=6.0.5.17707,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed"不是。

Then

按Ctrl-Alt-O进入构建输出窗口 搜索“was chosen”可以找到下钻。

...是的,对于那些看[诊断]信息细节的人来说,这对这个无知的人来说是新闻,在城里有一个公约,所有6。x版本在内部是Assembly Version 6.0.0.0,即只有SemVer Major组件进入Assembly Version:)

我已经卸载了Microsoft ASP。NET MVC nuget.org从管理NuGet Packagaes再次重新安装它。重新安装时解决了所有与剃刀版本相关的冲突。试试吧。

VS 2017, MVC项目

我不知道为什么,但对我来说,这个问题的解决方案是从控制器动作方法调用的模型方法签名中删除一个out参数。这是非常奇怪的行为,但这是我问题的解决方案。

根据其他答案,将输出日志记录级别设置为detailed并在那里搜索冲突,这将告诉您下一步要查看的位置。

在我的例子中,它让我在几个方向上寻找引用的源,但最后发现问题出在我的一个可移植类库项目上,它瞄准了错误的版本,并引入了自己的引用版本,因此产生了冲突。一个快速的重新定位,问题就解决了。

我该如何让警告消失呢?

你可能需要重新安装或升级你的NuGet包来解决这个问题。