【问题标题】:How to do bindingRedirect for DLL project to prevent - warning MSB3247: Found conflicts如何为 DLL 项目做 bindingRedirect 以防止 - 警告 MSB3247:发现冲突
【发布时间】:2012-02-07 14:25:14
【问题描述】:

我有一个名为“Foo”的 DLL 项目,它引用了 Newtonsoft.Json 4.0.7。 我有第二个 DLL 项目,称为“Bar”,引用“Foo”并引用 Newtonsoft.Json 4.0.5。并且由于各种原因,无法更改两者的 Newtonsoft.Json 版本。

当我编译这个时,我在项目“Bar”上收到这个警告:

警告 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 时,警告消失了。所以我猜重定向只适用于可执行文件。

如何在我的场景中消除该警告?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    您想访问不同的 NewtonSoft.Json dll 版本吗?不是?从配置中删除块,一切正常。

    【讨论】:

    • 正如我所说,“Bar”需要 4.0.5,“Foo”需要 4.0.7。 “Foo”是一个外部的,所以我不能改变它的绑定。 “Bar”引用需要 4.0.5 才能工作的 RavenDB。并且配置块不会改变任何东西。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-10
      • 2019-04-19
      • 2019-12-01
      • 1970-01-01
      • 2019-05-07
      • 2012-12-02
      • 1970-01-01
      • 2019-06-20
      相关资源
      最近更新 更多