Udostępnij za pośrednictwem


Zestaw SDK platformy .NET używa mniejszego grafu RID

Projekty przeznaczone dla platformy .NET 8 lub nowszej używają teraz mniejszego, przenośnego grafu identyfikatora środowiska uruchomieniowego (RID).

Poprzednie zachowanie

Zestaw SDK platformy .NET używał złożonego grafu RID do określania zasobów podczas kompilowania lub publikowania projektu.

Nowe zachowanie

Począwszy od platformy .NET 8, zestaw .NET SDK używa mniejszego grafu składającego się tylko z przenośnych identyfikatorów ZAREZERWOWANYch dla projektów przeznaczonych dla platformy .NET 8 lub nowszej wersji. Oznacza to, że zestaw SDK domyślnie nie rozpoznaje identyfikatorów ZAREZERWOWANYch specyficznych dla wersji ani dystrybucji. Podczas kompilowanie projektu może zostać wyświetlony następujący błąd (lub podobny):

błąd NETSDK1083: określony element RuntimeIdentifier "win10-x64" nie jest rozpoznawany. Aby uzyskać więcej informacji, zobacz https://aka.ms/netsdk1083.

Wprowadzona wersja

.NET 8 RC 1

Typ zmiany powodującej niezgodność

Ta zmiana jest zmianą behawioralną i może również mieć wpływ na zgodność źródła.

Przyczyna wprowadzenia zmiany

Graf RID był kosztowny do utrzymania i zrozumienia, wymagając, aby platforma .NET była świadoma dystrybucji w kruchy sposób. Zespół platformy .NET i społeczność poświęcają nietrywialny czas na aktualizowanie grafu i importowanie takich aktualizacji do poprzednich wersji. Długoterminowym celem jest zatrzymanie aktualizowania grafu RID, zatrzymywanie odczytywania go i usuwanie go w końcu. Ta zmiana powodująca niezgodność jest krokiem w kierunku tego celu.

Użyj przenośnych identyfikatorów ZAREZERWOWANYch, na przykład linux-<arch>, linux-musl-<arch>, osx-<arch>i win-<arch>, zamiast identyfikatorów ZAREZERWOWANYch specyficznych dla wersji lub identyfikatorów ZAREZERWOWANYch specyficznych dla wersji, takich jak ubuntu.16.04-<arch>, osx.10.11-<arch>i win10-<arch>.

Jeśli określisz identyfikator RID przy użyciu właściwości RuntimeIdentifier MSBuild w pliku projektu (*.csproj, *.vbproj lub *.fsproj), zmień go odpowiednio. Na przykład zmień wartość <RuntimeIdentifier>win10-x64</RuntimeIdentifier> na <RuntimeIdentifier>win-x64</RuntimeIdentifier> w pliku projektu:

<PropertyGroup>
  ...
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>

W przypadku określenia identyfikatora RID jako argumentu wiersza polecenia wprowadź podobną zmianę. Na przykład zamiast dotnet publish --framework net8.0 --runtime win10-x64polecenia użyj polecenia dotnet publish --framework net8.0 --runtime win-x64.

Jeśli chcesz przywrócić poprzednie zachowanie przy użyciu starego, pełnego grafu RID, możesz ustawić UseRidGraph właściwość MSBuild na true wartość w pliku projektu. Jednak stary graf RID nie zostanie zaktualizowany w przyszłości, aby spróbować obsłużyć inne dystrybucje lub architektury.

<PropertyGroup>
  <UseRidGraph>true</UseRidGraph>
</PropertyGroup>

Zobacz też