NETSDK1071: Explizit versionierte PackageReference-Verweise auf ein Metapaket würden in das Framework eingeschlossen werden

Dieser Artikel bezieht sich auf: ✔️ .NET 5.0.100 SDK und höhere Versionen

Wenn das .NET SDK die Warnung NETSDK1071 ausgibt, weist dies darauf hin, dass künftig ein Versionskonflikt zwischen der in einer PackageReference angegebenen Version eines Metapakets und der Version dieses Metapakets bestehen könnte, auf die implizit über eine TargetFramework-Eigenschaft verwiesen wird:

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

Da die TargetFramework Automatisch eine Version des Metapackages mit sich bringt, werden die Versionen in Konflikt stehen, wenn sie sich je unterscheiden.

Gehen Sie wie folgt vor, um dies zu beheben:

  1. Wenn Sie .NET Core oder .NET Standard als Ziel verwenden, sollten Sie explizite Verweise auf Microsoft.NETCore.App oder NETStandard.Library in Ihrer Projektdatei vermeiden.

  2. Wenn Sie eine bestimmte Version der Laufzeit benötigen, wenn sie auf .NET Core ausgerichtet ist, verwenden Sie die <RuntimeFrameworkVersion>Eigenschaft, anstatt direkt auf das Metapaket zu verweisen. Dies kann beispielsweise passieren, wenn Sie eigenständige Bereitstellungen verwenden und einen bestimmten Patch der 1.0.0 LTS-Laufzeit benötigen.

  3. Wenn Sie bei der Ausrichtung auf .NET Standard eine bestimmte Version von NetStandard.Library benötigen, können Sie die Eigenschaft <NetStandardImplicitPackageVersion> verwenden und auf die benötigte Version festlegen.

  4. Fügen Sie in .NET Framework-Projekten keine Verweise auf entweder Microsoft.NETCore.App oder NETSTandard.Library explizit hinzu, und aktualisieren Sie sie nicht. NuGet installiert automatisch alle benötigten Versionen von NETStandard.Library, wenn Sie ein auf .NET Standard basierendes NuGet-Paket verwenden.

  5. Geben Sie keine Version für Microsoft.AspNetCore.App oder Microsoft.AspNetCore.All bei Verwendung von .NET Core 2.1+ an, da das .NET SDK automatisch die entsprechende Version auswählt. (Hinweis: Dies funktioniert nur, wenn auf .NET Core 2.1 abgezielt wird und das Projekt auch Microsoft.NET.Sdk.Web verwendet. Dieses Problem wurde im .NET Core 2.2 SDK behoben.)

  6. Wenn die Warnung nicht mehr angezeigt werden soll, können Sie sie auch deaktivieren:

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