如何对DLL项目执行bindingRedirect以防止-警告MSB3247:发现冲突

本文关键字:警告 MSB3247 冲突 发现 DLL 项目 bindingRedirect 执行 | 更新日期: 2023-09-27 18:23:51

我有一个DLL项目,名为"Foo",引用Newtonsoft.Json 4.0.7。我有第二个DLL项目,名为"Bar",引用了"Foo",并引用了Newtonsoft.Json 4.0.5。由于各种原因,不可能同时更改Newtonsoft.Json版本。

当我编译这个时,我在项目"栏"上得到了这个警告:

警告MSB3247:发现同一依赖程序集的不同版本之间存在冲突。

所以我在项目"Bar"中创建了一个app.config:

<dependentAssembly>
  <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
  <bindingRedirect oldVersion="0.0.0-4.0.7" newVersion="4.0.5"/>
</dependentAssembly>

但这并没有阻止这一警告。

现在有趣的是,当我将"Bar"项目从DLL更改为Console时,警告就会消失。所以我想重定向只适用于可执行文件。

在我的场景中,我该如何摆脱这个警告?

如何对DLL项目执行bindingRedirect以防止-警告MSB3247:发现冲突

是否要访问不同的NewtonSoft.Json dll版本?不从配置中删除该块,一切都会正常工作。

此错误可能有不同的情况,我收到消息MSB3247,并通过将排除的DLL项目重新加载到我的解决方案来解决问题。该项目引用了排除的DLL,但有以前编译过的DLL版本,可能是这导致了问题-无论如何,现在它又可以工作了(-:
我希望它能帮助