Distributionskörning framåt för fristående distribution

.NET Core fristående programdistributioner omfattar både .NET Core-biblioteken och .NET Core-körningen. Från och med .NET Core 2.1 SDK (version 2.1.300) publicerar en fristående programdistribution den högsta korrigeringskörningen på datorn. Som standard dotnet publish väljer en fristående distribution den senaste versionen som installerats som en del av SDK:t på publiceringsdatorn. På så sätt kan ditt distribuerade program köras med säkerhetskorrigeringar (och andra korrigeringar) som är tillgängliga under publish. Programmet måste publiceras på nytt för att få en ny korrigering. Fristående program skapas genom att -r <RID> ange på dotnet publish kommandot eller genom att ange körningsidentifieraren (RID) i projektfilen (csproj/vbproj) eller på kommandoraden.

Översikt över vidarekoppling av korrigeringsversion

restorepublish och build är dotnet kommandon som kan köras separat. Körningsvalet är en del av åtgärden restore , inte publish eller build. Om du anropar publishväljs den senaste korrigeringsversionen. Om du anropar publish med --no-restore argumentet kanske du inte får den önskade korrigeringsversionen eftersom en tidigare restore kanske inte har körts med den nya fristående programpubliceringsprincipen. I det här fallet genereras ett byggfel med text som liknar följande:

"Projektet återställdes med Microsoft.NETCore.App version 2.0.0, men med aktuella inställningar skulle version 2.0.6 användas i stället. Lös problemet genom att kontrollera att samma inställningar används för återställning och för efterföljande åtgärder, till exempel skapa eller publicera. Det här problemet kan vanligtvis inträffa om egenskapen RuntimeIdentifier anges under bygget eller publiceringen, men inte under återställningen."

Kommentar

restore och build kan köras implicit som en del av ett annat kommando, till exempel publish. När de körs implicit som en del av ett annat kommando får de ytterligare kontext så att rätt artefakter skapas. När du publish använder en körning (till exempel dotnet publish -r linux-x64), återställer implicita restore paket för linux-x64-körningen. Om du anropar restore explicit återställs inte körningspaket som standard eftersom det inte har den kontexten.

Så här undviker du återställning under publiceringen

Att köra restore som en del av publish åtgärden kan vara oönskat för ditt scenario. Gör följande för att undvika restore under publish skapandet av fristående program:

  • Ange egenskapen RuntimeIdentifiers till en semikolonavgränsad lista över alla RID:er som ska publiceras.
  • Ange egenskapen TargetLatestRuntimePatch till true.

No-restore-argument med publiceringsalternativ för dotnet

Om du vill skapa både fristående program och ramverksberoende program med samma projektfil och du vill använda --no-restore argumentet med dotnet publishväljer du något av följande:

  1. Föredrar det ramverksberoende beteendet. Om programmet är ramverksberoende är detta standardbeteendet. Om programmet är fristående och kan använda en oparterad lokal 2.1.0-körning anger du TargetLatestRuntimePatch till false i projektfilen.

  2. Föredrar det fristående beteendet. Om programmet är fristående är detta standardbeteendet. Om programmet är ramverksberoende och kräver den senaste korrigeringen installerad anger du TargetLatestRuntimePatch till true i projektfilen.

  3. Ta explicit kontroll över körningsramverkets version genom att ange RuntimeFrameworkVersion den specifika korrigeringsversionen i projektfilen.