NuGet 错误 NU1008

以下 PackageReference 项无法为 Version:PackageName 定义值。 使用中央包管理的项目必须在 PackageVersion 项上定义版本值。

問题

项目配置为使用 NuGet Central 包管理 ,并且定义了一个 <PackageReference /> 项,该项指定 Version 属性的值:

<ItemGroup>
  <PackageReference Include="PackageName" Version="5.1.0" />
</ItemGroup>

或者,使用 <PackageReference /> 具有指定值的子 <Version /> 元素定义项:

<ItemGroup>
  <PackageReference Include="PackageName">
    <Version>5.1.0</Version>
  </PackageReference>
</ItemGroup>

配置为使用 中央包管理 的项目不应在项上 <PackageReference /> 定义版本。 应改为在 Directory.Packages.props 文件中具有相同标识符的对应<PackageVersion />项上定义版本。

解决方案

  • Version<PackageReference />项中删除属性或子<Version />元素:

    <ItemGroup>
      <PackageReference Include="PackageName" />
    </ItemGroup>
    
  • 定义一个 <PackageVersion /> 项,该项指定 Directory.Packages.props 文件中的版本,其标识符与 <PackageReference /> 项相同:

    <ItemGroup>
      <PackageVersion Include="PackageName" Version="5.0.1" />
    </ItemGroup>
    

或者,中央包管理允许重写集中定义的包版本。 有关详细信息,请参阅 替代包版本

注释

请注意, IncludeAssets、PrivateAssets 等 元数据应保留在 PackageReference 项上。