NuGet 错误 NU1109

NU1109:检测到的包降级:PackageB 从 2.0.0 降级到集中定义的 1.0.0。 将集中管理的包版本更新为更高版本。
  'Project' -> 'PackageA' 1.0.0 -> 'PackageB' (>= 2.0.0)
  'Project' -> 'PackageB' (>= 1.0.0)

問题

项目配置为使用 NuGet Central 包管理 ,并且传递包依赖项固定到低于依赖项包指定的版本。 解析包时,NuGet 会遵循 直接依赖项-wins 规则,固定包版本将替代依赖项包指定的版本,这会导致包的较低版本得到解决,这可能会导致运行时出现问题。

<PropertyGroup>
  <CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
</PropertyGroup>
<ItemGroup>
  <PackageVersion Include="PackageA" Version="1.0.0" />
  <PackageVersion Include="PackageB" Version="1.0.0" />
</ItemGroup>

解决方案

  • PackageVersionPackageB包更新到更高版本的包。
<ItemGroup>
  <PackageVersion Include="PackageB" Version="2.0.0" />
</ItemGroup>
  • 禁用中央包管理可传递固定,以允许使用依赖项包指定的包版本。
<PropertyGroup>
  <CentralPackageTransitivePinningEnabled>false</CentralPackageTransitivePinningEnabled>
</PropertyGroup>