当我清理并构建具有多个项目的解决方案时,输出窗口将报告构建成功。然而,当我查看错误列表窗口时,它向我显示了这样的警告:
发现同一依赖程序集的不同版本之间存在无法解决的冲突。当日志详细信息设置为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,然后我如何使警告消失?
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:)