Automatische Runtime Identifier voor bepaalde projecten

Projecten die een van de volgende eigenschappen opgeven, krijgen nu automatisch een runtime-id (RID) op. Een RID maakt het publiceren van een zelfstandige implementatie mogelijk.

  • SelfContained
  • PublishAot
  • PublishReadyToRun
  • PublishSingleFile
  • PublishSelfContained (Alleen voor .NET SDK 7.0.200 en latere versies)

De volgende projecten kunnen worden beïnvloed door deze wijziging:

  • Oude projecten die de ontbrekende runtime-id-fout hebben omzeild.
  • Projecten met RuntimeIdentifiers maar niet RuntimeIdentifier.
  • Projecten die gebruikmaken van in code vastgelegde paden zonder RID's.
  • Projecten die deze eigenschappen hadden, maar een build gebruikten in plaats van een publicatie, en accepteerden dat de publicatie in een verbroken staat verkeerde.

Er zijn andere mogelijke nuances die afzonderlijke situaties kunnen breken waarvan we nog niet op de hoogte zijn.

Opmerking

Deze wijziging is beperkt tot de dotnet publish opdracht in .NET 7.0.200 SDK. Voor meer informatie, zie Automatic RuntimeIdentifier voor publicatie alleen.

Geïntroduceerde versie

.NET 7

Vorig gedrag

Voorheen konden deze projecten niet worden gepubliceerd met fouten zoals:

Het wordt niet ondersteund om een toepassing te publiceren naar een enkel bestand zonder een RuntimeIdentifier op te geven. Geef een RuntimeIdentifier op of stel PublishSingleFile in op false.

OF

fout NETSDK1031: het wordt niet ondersteund om een zelfstandige toepassing te bouwen of te publiceren zonder een RuntimeIdentifier op te geven. U moet een RuntimeIdentifier opgeven of SelfContained instellen op false.

In sommige gevallen, zoals PublishSingleFile of met speciale RuntimeIdentifiers logica, kunnen projecten succesvol zijn gebouwd zonder een RuntimeIdentifier.

Nieuw gedrag

Projecten die een van de eigenschappen aan het begin van dit artikel opgeven, krijgen automatisch een RuntimeIdentifier waarde. Dit nieuwe gedrag kan buildfouten veroorzaken voor projecten die afhankelijk zijn van RuntimeIdentifiers maar niet van RuntimeIdentifier, omdat RuntimeIdentifier op een andere manier dan RuntimeIdentifiers van invloed kan zijn op het uitvoerpad. Het kan ook fouten veroorzaken voor AnyCPU projecten die afhankelijk zijn van PublishSingleFile, maar die niet altijd een RuntimeIdentifier geven wanneer andere acties worden uitgevoerd. Deze fouten kunnen als volgt worden weergegeven:

Het doelproces is afgesloten zonder een CoreCLR-gestarte gebeurtenis te genereren. Zorg ervoor dat het doelproces is geconfigureerd voor het gebruik van .NET Core.

Type van brekende verandering

Deze wijziging kan invloed hebben op broncompatibiliteit.

Reden voor wijziging

Een meerderheid van de .NET-projecten kan niet worden gepubliceerd met behulp van de genoemde eigenschappen zonder RuntimeIdentifier set. Deze wijziging vermindert de noodzaak om de RID handmatig toe te voegen telkens wanneer u de genoemde eigenschappen gebruikt.

Als uw project wordt beïnvloed, kunt u het automatisch RuntimeIdentifier uitschakelen door dit toe te voegen aan <UseCurrentRuntimeIdentifier>false</UseCurrentRuntimeIdentifier> uw projectbestand.

Als er een onderbreking optreedt vanwege het wijzigen van het uitvoerpad, voegt u <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> toe aan het projectbestand.

Zie ook