我的构建中出现了类似于以下警告的墙:
No way to resolve conflict between "Newtonsoft.Json, Version=7.0.0.0"
and "Newtonsoft.Json, Version=6.0.0.0".
Choosing "Newtonsoft.Json, Version=7.0.0.0" arbitrarily.
我得到以下dll的其他警告(重复是有意的):
Microsoft.Owin
System.Web.Http
Newtonsoft.Json
System.Net.Http.Formatting
Microsoft.Owin
Microsoft.ApplicationInsights
以及每个警告的匹配消息:
Consider app.config remapping of assembly to solve conflict and get rid of warning.
最后,我得到了这个冲突:
Microsoft.Common.CurrentVersion.targets Found conflicts between
different versions of the same dependent assembly.
Please set the "AutoGenerateBindingRedirects" property to true
in the project file.
我已经阅读了每个堆栈溢出和MSDN答案,我可以找到这些消息.根据this answer,最佳解决方案是更改导致冲突警告引用相同版本的引用.似乎问题是来自解决方案中53个项目中的一些项目的组件链依赖于具有不同版本的不同组件.我无法分辨哪些项目会导致这些警告,并且绑定重定向(在我检查的每个项目中自动生成)对警告没有影响.
我该怎么做才能解决这些构建警告?
最佳答案 它们都是相同的警告,实际上是在告诉你该怎么做.您可以清理项目中的所有引用.如果您正在使用NuGet,这不应该是一个太大的问题.进入管理NuGet包.您应该在列表中看到重复的包.将对旧包的引用移动到包的新版本.这是解决冲突的一种方法.
第二种方法是为所有冲突的程序集添加绑定重定向.这是一个Json.net重定向的示例.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>