Udostępnij za pomocą


NETSDK1071: Jawnie wersjonowane PackageReference do metapakietu, który zostałby dołączony do frameworku.

Ten artykuł dotyczy: ✔️ pakiet SDK .NET 5.0.100 oraz nowsze wersje

Gdy .NET SDK wyświetla ostrzeżenie NETSDK1071, sugeruje, że w przyszłości może wystąpić konflikt wersji między wersją metapakiety określoną w elemencie PackageReference a wersją tej metapakiety niejawnie przywołaną za pośrednictwem właściwości TargetFramework.

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

Ponieważ TargetFramework automatycznie wprowadza wersję metapakietu, wersje będą powodować konflikty, jeśli będą się różnić.

Aby rozwiązać ten problem:

  1. W przypadku kompilacji dla platformy .NET Core lub .NET Standard należy unikać jawnych odwołań do Microsoft.NETCore.App lub NETStandard.Library w pliku projektu.

  2. Jeśli potrzebujesz określonej wersji środowiska uruchomieniowego podczas targetowania platformy .NET Core, użyj właściwości <RuntimeFrameworkVersion> zamiast odwoływać się bezpośrednio do metapakiety. Na przykład może się to zdarzyć, jeśli używasz samodzielnych wdrożeń i potrzebujesz określonej poprawki środowiska uruchomieniowego 1.0.0 LTS.

  3. Jeśli potrzebujesz określonej wersji, celując w NetStandard.Library dla platformy .NET Standard, możesz użyć właściwości <NetStandardImplicitPackageVersion> i ustawić ją na wersję, której potrzebujesz.

  4. Nie dodawaj jawnie ani nie aktualizuj odwołań do Microsoft.NETCore.App ani NETSTandard.Library w projektach programu .NET Framework. Narzędzie NuGet automatycznie instaluje dowolną potrzebną wersję NETStandard.Library w przypadku korzystania z pakietu NuGet opartego na platformie .NET Standard.

  5. Nie należy określać wersji Microsoft.AspNetCore.App ani Microsoft.AspNetCore.All w przypadku korzystania z .NET Core 2.1 lub nowszej, ponieważ zestaw SDK platformy .NET automatycznie wybiera odpowiednią wersję. (Uwaga: Działa to tylko wtedy, gdy projekt jest skierowany na .NET Core 2.1 i używa również elementu Microsoft.NET.Sdk.Web. Ten problem został rozwiązany w SDK .NET Core 2.2).

  6. Jeśli chcesz, aby ostrzeżenie odeszło, możesz go również wyłączyć:

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