Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Projekt som anger någon av följande egenskaper får nu automatiskt en körningsidentifierare (RID). Med RID kan du publicera en fristående implementering.
SelfContainedPublishAotPublishReadyToRunPublishSingleFile-
PublishSelfContained(.NET SDK 7.0.200 och senare versioner bara)
Följande projekt kan påverkas av den här ändringen:
- Gamla projekt som kringgick felet med den saknade körningsidentifieraren.
- Projekt som har
RuntimeIdentifiersmen inteRuntimeIdentifier. - Projekt som använder hårdkodade sökvägar utan RID.
- Projekt som hade dessa egenskaper men använde en bygga istället för publicera och tillät att publicering var i ett trasigt tillstånd.
Det finns andra potentiella nyanser som kan bryta enskilda situationer som vi ännu inte känner till.
Anmärkning
Den här ändringen begränsades till dotnet publish kommandot i .NET 7.0.200 SDK. För mer information, se Automatisk RuntimeIdentifier för enbart publicering.
Version lanserad
.NET 7
Tidigare beteende
Tidigare kunde dessa projekt inte publiceras med fel som:
Det går inte att publicera ett program till en enskild fil utan att ange en RuntimeIdentifier. Ange antingen en RuntimeIdentifier eller ange PublishSingleFile till false.
ELLER
fel NETSDK1031: Det går inte att skapa eller publicera ett fristående program utan att ange en RuntimeIdentifier. Du måste antingen ange en RuntimeIdentifier eller ange SelfContained till false.
I vissa fall, som PublishSingleFile eller med särskild RuntimeIdentifiers logik, kan projekt ha byggts framgångsrikt utan en RuntimeIdentifier.
Nytt beteende
Projekt som anger någon av de egenskaper som anges i början av den här artikeln får en RuntimeIdentifier automatiskt. Det här nya beteendet kan orsaka byggfel för projekt som förlitar sig på RuntimeIdentifiers men inte RuntimeIdentifier, eftersom RuntimeIdentifier kan påverka utdatasökvägen tydligt från RuntimeIdentifiers. Det kan också orsaka problem med AnyCPU projekt som är beroende av PublishSingleFile men inte alltid ger ett RuntimeIdentifier när andra åtgärder vidtas. Dessa fel kan visas på följande sätt:
Målprocessen avslutades utan att initiera en CoreCLR-startad händelse. Kontrollera att målprocessen är konfigurerad för att använda .NET Core.
Typ av brytande ändring
Den här ändringen kan påverka källkompatibilitet.
Orsak till ändring
En majoritet av .NET-projekt kan inte publicera med hjälp av de nämnda egenskaperna utan RuntimeIdentifier angivet. Den här ändringen minskar behovet av att lägga till RID manuellt varje gång du använder de nämnda egenskaperna.
Rekommenderad åtgärd
Om projektet påverkas kan du inaktivera automatiskt RuntimeIdentifier genom att lägga <UseCurrentRuntimeIdentifier>false</UseCurrentRuntimeIdentifier> till i projektfilen.
Om du stöter på ett fel eftersom utdatasökvägen ändras, lägg till <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> i projektfilen.