NETSDK1071:对框架中将包含的元包的显式版本化 PackageReference。

本文适用于: ✔️ .NET 5.0.100 SDK 及更高版本

当 .NET SDK 发出警告 NETSDK1071 时,它表明将来在 PackageReference 中指定的元包版本与通过 TargetFramework 属性隐式引用的元包版本之间可能会存在版本冲突:

<PropertyGroup>
  <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

由于 TargetFramework 会自动引入元包的版本,因此如果版本不同,它们将发生冲突。

若要解决此问题:

  1. 在面向 .NET Core 或 .NET Standard 时,请考虑避免显式引用项目文件中的 Microsoft.NETCore.AppNETStandard.Library

  2. 面向 .NET Core 时,如果需要特定版本的运行时,请使用 <RuntimeFrameworkVersion> 属性,而不是直接引用元包。 例如,如果使用的是 self-contained deployments 并需要 1.0.0 LTS 运行时的特定修补程序,则可能会发生这种情况。

  3. 面向 .NET Standard 时,如果需要特定版本的 NetStandard.Library,可以使用 <NetStandardImplicitPackageVersion> 属性并将其设置为所需版本。

  4. 请勿在 .NET Framework 项目中显式添加或更新对 Microsoft.NETCore.AppNETSTandard.Library 的引用。 使用基于 .NET Standard 的 NuGet 包时,NuGet 会自动安装所需的任何版本的 NETStandard.Library

  5. 使用 .NET Core 2.1+ 时,请勿指定 Microsoft.AspNetCore.AppMicrosoft.AspNetCore.All 版本,因为 .NET SDK 会自动选择相应的版本。 (注意:如果该项目还使用 Microsoft.NET.Sdk.Web,则此操作仅适用于面向 .NET Core 2.1 的情况。此问题在 .NET Core 2.2 SDK 中已得到解决。)

  6. 如果希望警告消失,还可以禁用它:

    <PackageReference Include="Microsoft.NetCore.App" Version="2.2.8" >
      <AllowExplicitVersion>true</AllowExplicitVersion>
    </PackageReference>