.NET Core - MSB3277:发现不同版本之间存在冲突

.NET Core - MSB3277: Found conflicts between different versions

我很难摆脱构建警告:

warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved

特别是在 .NET 核心项目中。

在一个完整的 .NET Framework 项目中,我会添加一些绑定重定向,所以我搜索了这个问题并发现 建议将以下内容添加到 .csproj 文件:

<PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

我已经这样做了,但无济于事 - 我仍然收到构建警告。还有什么我可以做的吗?

我查看了您的项目,问题似乎与构建 Rssdp 的版本和引用的 System.Net.Http 版本(4.3.0) 提供编译时参考。

这可以通过将 System.Net.Http 更新为 4.3.2 来解决。

<PackageReference Include="System.Net.Http" Version="4.3.2"/>

运行 通过包管理器控制台更新包,这将修复 MSB3277,它的作用是重新安装所有可能具有最高版本的包。

有关官方文档的更多信息https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages

我遇到了同样的问题。在其中一个项目上收到了几个警告。我从解决方案级别更新了所有包,警告消失了。 我使用 Mac 的 Visual Studios 来更新包。 右键单击该解决方案,然后单击更新 Nuget 包。

你们中有任何依赖项使用 <PrivateAssets> 吗?

如果项目A有一个私有引用,并且私有引用和另一个引用都需要一些包X,但是私有需要更高版本的包X,那么项目A的程序集也需要更高版本包裹X。 但是,您最终会遇到任何其他项目的情况,例如引用项目 A 的项目 B 只会将包 X 的较低版本视为依赖项 - 因此 select 将包 X 的程序集的较低版本复制到输出目录。好消息是这个 DLL-HELL 在构建时被检测到,它看到程序集 projectA.dll 需要一个不同于已经指定为主要的 projectX.dll 的 projectX.dll ,因此它记录了一些非常无用的关于 packageX 本身需要的输出,这没有意义...并放弃构建。