【问题标题】:No way to resolve conflict between - Warning没有办法解决之间的冲突 - 警告
【发布时间】:2021-03-07 10:38:32
【问题描述】:

我在视觉工作室构建过程中收到这样的警告

7>  No way to resolve conflict between "Microsoft.Extensions.DependencyInjection, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60" and "Microsoft.Extensions.DependencyInjection, Version=2.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60". Choosing "Microsoft.Extensions.DependencyInjection, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60" arbitrarily.

在解决方案中,我有几个项目。我怎样才能知道/找到编译器的困惑来自哪里? 我在解决方案中到处寻找,但在任何可以使用 2.0.0.0 版本的项目中都没有看到任何程序集?

【问题讨论】:

  • 大概是您使用较新版本引用我们的某些库。
  • 你可以在你的项目中查看传递依赖,你的一些库可以使用Microsoft.Extensions.DependencyInjection的新版本或旧版本
  • 1.检查依赖项的依赖项,2. 我建议通过构造函数注入依赖项(既作为单个实例的对象,也作为需要在范围内创建实例的地方的工厂函数)而不是使用 DI 库。
  • @John,有关于这个问题的更新吗?

标签: visual-studio nuget conflicting-libraries


【解决方案1】:

是的。这可能是由于两个 nuget 包的依赖项包含相同的依赖项Microsoft.Extensions.DependencyInjection 但版本不同。或者是项目引用的dll。

像这样:

一种方法是安装Microsoft.Extensions.DependencyInjectionnuget包版本3.0.0

或者在xxx.config文件下添加bindingRedirect

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="xxx" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
  </runtime>

2) 或者只是找到问题 nuget,然后更新其使用 Microsoft.Extensions.DependencyInjection 3.0.0 依赖项的版本。

3) 或者您可以使用PackageReference nuget management format。这是一种新的 nuget 管理格式。右键单击packages.config 文件-->将 packages.config 迁移到 PackageReference

此外,如果问题仍然存在,您可以与我们分享packages.config,以帮助我们解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2015-10-28
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多