NETSDK1071:将包引用明确指定版本为随框架一起包含的元包。

本文适用于: ✔️.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>属性,而不是直接引用元包。 例如,如果使用 独立部署 ,并且需要 1.0.0 LTS 运行时的特定修补程序,则可能会出现这种情况。

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

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

  5. 请勿为 Microsoft.AspNetCore.AppMicrosoft.AspNetCore.All 指定版本,尤其是在使用 .NET Core 2.1+ 时,因为 .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>