问题描述
我在 Visual Studio 构建过程中收到了这样的警告
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,PublicKeyToken=adb9793829ddae60". Choosing "Microsoft.Extensions.DependencyInjection,PublicKeyToken=adb9793829ddae60" arbitrarily.
在解决方案中,我有几个项目。我怎么知道/找到编译器的混乱来自哪里? 我在解决方案中到处寻找,但在任何可以使用 2.0.0.0 版本的项目中都没有看到任何程序集?
解决方法
是的。这可能是因为两个 nuget 包的依赖项包含相同的依赖项 Microsoft.Extensions.DependencyInjection
但版本不同。或者是项目引用的dll。
像这样:
一种方法是安装 Microsoft.Extensions.DependencyInjection
nuget 软件包版本 3.0.0
。
或者在bindingRedirect
文件下添加xxx.config
:
<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
以帮助我们解决我们这边的问题。