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
restore
publish
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 publish
vä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
tilltrue
.
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 publish
väljer du något av följande:
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
tillfalse
i projektfilen.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
tilltrue
i projektfilen.Ta explicit kontroll över körningsramverkets version genom att ange
RuntimeFrameworkVersion
den specifika korrigeringsversionen i projektfilen.