Implementatieruntime op zichzelf staand doorsturen
.NET Core zelf-ingesloten toepassingsimplementaties omvatten zowel de .NET Core-bibliotheken als de .NET Core-runtime. Vanaf .NET Core 2.1 SDK (versie 2.1.300) publiceert een zelfstandige toepassingsimplementatie de hoogste patchruntime op uw computer. Voor een zelfstandige implementatie selecteert u standaard dotnet publish
de meest recente versie die is geïnstalleerd als onderdeel van de SDK op de publicatiemachine. Hierdoor kan uw geïmplementeerde toepassing worden uitgevoerd met beveiligingsoplossingen (en andere oplossingen) die beschikbaar zijn tijdens publish
. De toepassing moet opnieuw worden gepubliceerd om een nieuwe patch te verkrijgen. Zelfstandige toepassingen worden gemaakt door op te geven -r <RID>
in de dotnet publish
opdracht of door de runtime-id (RID) op te geven in het projectbestand (csproj/vbproj) of op de opdrachtregel.
Overzicht van het doorsturen van patchversies
restore
build
en publish
zijn dotnet
opdrachten die afzonderlijk kunnen worden uitgevoerd. De runtimekeuze maakt deel uit van de restore
bewerking, niet publish
of build
. Als u belt publish
, wordt de meest recente patchversie gekozen. Als u het --no-restore
argument aanroeptpublish
, krijgt u mogelijk niet de gewenste patchversie omdat een eerdere restore
versie mogelijk niet is uitgevoerd met het nieuwe beleid voor het publiceren van zelfstandige toepassingen. In dit geval wordt er een buildfout gegenereerd met tekst die er ongeveer als volgt uitziet:
"Het project is hersteld met Microsoft.NETCore.App versie 2.0.0, maar met de huidige instellingen wordt versie 2.0.6 gebruikt. Om dit probleem op te lossen, moet u ervoor zorgen dat dezelfde instellingen worden gebruikt voor herstel en voor volgende bewerkingen, zoals bouwen of publiceren. Dit probleem kan meestal optreden als de eigenschap RuntimeIdentifier is ingesteld tijdens het bouwen of publiceren, maar niet tijdens het herstellen.'
Notitie
restore
en build
kan impliciet worden uitgevoerd als onderdeel van een andere opdracht, zoals publish
. Wanneer ze impliciet worden uitgevoerd als onderdeel van een andere opdracht, worden ze geleverd met extra context, zodat de juiste artefacten worden geproduceerd. Wanneer u publish
een runtime gebruikt (bijvoorbeeld dotnet publish -r linux-x64
), worden pakketten impliciet restore
hersteld voor de linux-x64-runtime. Als u expliciet aanroept restore
, worden runtimepakketten niet standaard hersteld, omdat deze niet over die context beschikt.
Herstellen tijdens publiceren voorkomen
Uitvoeren restore
als onderdeel van de publish
bewerking kan ongewenst zijn voor uw scenario. Ga als volgt te werk om tijdens publish
het maken van zelfstandige toepassingen te voorkomenrestore
:
- Stel de
RuntimeIdentifiers
eigenschap in op een door puntkomma's gescheiden lijst met alle RID's die moeten worden gepubliceerd. - Stel de eigenschap
TargetLatestRuntimePatch
in optrue
.
Argument zonder herstel met dotnet-publicatieopties
Als u zowel zelfstandige toepassingen als frameworkafhankelijke toepassingen met hetzelfde projectbestand wilt maken en u het --no-restore
argument wilt gebruiken, dotnet publish
kiest u een van de volgende opties:
Geef de voorkeur aan het afhankelijke gedrag van het framework. Als de toepassing frameworkafhankelijk is, is dit het standaardgedrag. Als de toepassing zelfstandig is en een niet-gepatchte lokale runtime van 2.1.0 kan gebruiken, stelt u de
TargetLatestRuntimePatch
optie infalse
op in het projectbestand.Geef de voorkeur aan het zelfstandige gedrag. Als de toepassing zelfstandig is, is dit het standaardgedrag. Als de toepassing frameworkafhankelijk is en de meest recente patch is geïnstalleerd, stelt u deze in
TargetLatestRuntimePatch
true
het projectbestand in.Neem expliciet beheer van de runtime framework-versie door de specifieke patchversie in het projectbestand in te stellen
RuntimeFrameworkVersion
.