发现了不同版本的相同依赖程序集之间的冲突,无法解决。

431
当我清理并构建一个包含多个项目的解决方案时,输出窗口报告构建成功。但是,当我查看错误列表窗口时,它显示了以下警告:

找到无法解决的同一依赖程序集的不同版本之间的冲突。当日志详细度设置为详细时,在构建日志中列出这些引用冲突。 C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets

当我双击此消息时,它会打开C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets文件,但我不理解其中任何内容。
我正在使用Visual Studio Express 2013 for the Web。
我该如何找出问题所在以及哪个DLL出现了问题?如何消除警告?

2
还可以参考... https://dev59.com/TnI-5IYBdhLWcg3wZ3jC - SteveC
4
我已向MS Connect提交了建议,希望在消息中包括DLL名称。 https://connect.microsoft.com/VisualStudio/feedback/details/2619450 - Michael Freidgeim
我的情况是由于项目A中的<PrivateAssets>引起的。它将其他依赖项(我们称其为包X)的版本提升到了更高的版本。解决方案还有项目B,它将项目A作为引用。它看到包X的“低版本”(并选择该版本作为“主要”版本),因为私有资产请求的更高版本是...嗯,私有的-不可见的。现在到了构建的时候:PackageX.dll“低版本”被复制到输出,程序集projectA.dll被复制到输出... 等等! projectA.dll需要projekt X“更高版本”->无法解决的DLL地狱->构建失败。 - AnorZaken
22个回答

0

我在不同的项目中从nuget.org安装了Newtonsoft.Json v10.0.0.3和Newtonsoft.Json v11.X.X.X,并重新安装了它(相同版本)。重新安装后,解决了与razor版本相关的所有冲突。对我来说很有效!


0
我遵循这里几个回答的建议来找出问题所在,但似乎没有一个回答可以解释如何解决它。我的问题是一个引用需要不同版本的第二个引用。因此 Newtonsoft 的版本是 6,但其他一些 DLL 却需要 4.5 版本。然后我按照其中一个答案建议升级了 Newtonsoft,结果让情况变得更糟。
所以我实际上降级了我的 Newtonsoft 安装包,警告就消失了(在 VS 2017 中):
在解决方案资源管理器中右键单击“引用”,选择“管理 NuGet 程序包”… 在“已安装”选项卡下,找到 Newtonsoft(或任何您的冲突是什么) 右侧会出现一个下拉列表,旁边是“版本”,您可以将其更改为旧版本。我当时并没有意识到这个下拉列表可以用于降级。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接