gpt4 book ai didi

c# - 无法解决 dll 之间的冲突

转载 作者:行者123 更新时间:2023-11-30 12:23:10 27 4
gpt4 key购买 nike

我在我的构建中收到类似于以下内容的警告墙:

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 个项目中某些项目的程序集链依赖于具有不同版本的不同程序集。我无法判断是哪些项目导致了这些警告,并且绑定(bind)重定向(我检查过,在每个项目中自动生成)对警告没有影响。

我该怎么做才能解决这些构建警告?

最佳答案

它们都是相同的警告,实际上是在告诉您该怎么做。您可以清除项目中的所有引用。如果您使用的是 NuGet,这应该不是什么大问题。进入管理 NuGet 包。您应该在列表中看到重复的包。将对旧包的引用移动到新版本的包。这是解决冲突的一种方式。

第二种方法是为所有有冲突的程序集添加绑定(bind)重定向。这是 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>

关于c# - 无法解决 dll 之间的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998452/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com