NETSDK1071:对框架中将包含的元包的显式版本化 PackageReference。
本文适用于: ✔️ .NET 5.0.100 SDK 及更高版本
当 .NET SDK 发出警告 NETSDK1071 时,它表明将来在 PackageReference 中指定的元包版本与通过 TargetFramework 属性隐式引用的元包版本之间可能会存在版本冲突:
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
由于 TargetFramework
会自动引入元包的版本,因此如果版本不同,它们将发生冲突。
若要解决此问题:
在面向 .NET Core 或 .NET Standard 时,请考虑避免显式引用项目文件中的
Microsoft.NETCore.App
或NETStandard.Library
。面向 .NET Core 时,如果需要特定版本的运行时,请使用
<RuntimeFrameworkVersion>
属性,而不是直接引用元包。 例如,如果使用的是 self-contained deployments 并需要 1.0.0 LTS 运行时的特定修补程序,则可能会发生这种情况。面向 .NET Standard 时,如果需要特定版本的
NetStandard.Library
,可以使用<NetStandardImplicitPackageVersion>
属性并将其设置为所需版本。请勿在 .NET Framework 项目中显式添加或更新对
Microsoft.NETCore.App
或NETSTandard.Library
的引用。 使用基于 .NET Standard 的 NuGet 包时,NuGet 会自动安装所需的任何版本的NETStandard.Library
。使用 .NET Core 2.1+ 时,请勿指定
Microsoft.AspNetCore.App
或Microsoft.AspNetCore.All
版本,因为 .NET SDK 会自动选择相应的版本。 (注意:如果该项目还使用Microsoft.NET.Sdk.Web
,则此操作仅适用于面向 .NET Core 2.1 的情况。此问题在 .NET Core 2.2 SDK 中已得到解决。)如果希望警告消失,还可以禁用它:
<PackageReference Include="Microsoft.NetCore.App" Version="2.2.8" > <AllowExplicitVersion>true</AllowExplicitVersion> </PackageReference>