Dela via


.NET SDK använder ett mindre RID-diagram

Projekt som riktar in sig på .NET 8 eller senare versioner använder nu ett mindre, "portabelt" körningsidentifierare (RID).

Tidigare beteende

.NET SDK använde ett komplext RID-diagram för att fastställa tillgångar när du skapar eller publicerar ett projekt.

Nytt beteende

Från och med .NET 8 använder .NET SDK ett mindre diagram som endast består av bärbara RID:er för projekt som riktar in sig på .NET 8 eller en senare version. Det innebär att SDK:t inte identifierar versionsspecifika eller distributionsspecifika RID:er som standard. Du kan se följande fel (eller liknande) när du skapar projektet:

fel NETSDK1083: Den angivna RuntimeIdentifier "win10-x64" känns inte igen. Mer information finns i https://aka.ms/netsdk1083.

Version introducerad

.NET 8 RC 1

Typ av icke-bakåtkompatibel ändring

Den här ändringen är en beteendeförändring och kan även påverka källkompatibiliteten.

Orsak till ändringen

RID-grafen var kostsam att underhålla och förstå, vilket krävde att .NET självt var distro-medvetet på ett bräckligt sätt. .NET-teamet och communityn ägnar en icke-trivial tid åt att uppdatera grafen och backportera sådana uppdateringar till tidigare versioner. Det långsiktiga målet är att sluta uppdatera RID-grafen, sluta läsa den och slutligen ta bort den. Den här icke-bakåtkompatibla ändringen är ett steg mot det målet.

Använd bärbara RID:er, linux-<arch>till exempel , linux-musl-<arch>, osx-<arch>och win-<arch>, i stället för versionsspecifika eller distributionsspecifika RID:er, till exempel ubuntu.16.04-<arch>, osx.10.11-<arch>och win10-<arch>.

Om du anger RID med hjälp av egenskapen RuntimeIdentifier MSBuild i projektfilen (*.csproj, *.vbproj eller *.fsproj) ändrar du den därefter. Ändra till exempel <RuntimeIdentifier>win10-x64</RuntimeIdentifier> till <RuntimeIdentifier>win-x64</RuntimeIdentifier> i projektfilen:

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

Om du anger RID som ett kommandoradsargument gör du en liknande ändring. I stället för dotnet publish --framework net8.0 --runtime win10-x64använder du till exempel kommandot dotnet publish --framework net8.0 --runtime win-x64.

Om du behöver återgå till det tidigare beteendet att använda den gamla fullständiga RID-grafen UseRidGraph kan du ange egenskapen MSBuild till true i projektfilen. Den gamla RID-grafen uppdateras dock inte i framtiden för att försöka hantera andra distributioner eller arkitekturer.

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

Se även