Delen via


Zelfstandige runtime-implementatie voorwaarts bijwerken

.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 publish aanroept met het --no-restore argument, krijgt u mogelijk niet de gewenste patchversie omdat een eerdere restore 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.'

Opmerking

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), herstelt restore impliciet pakketten 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. Om restore te vermijden tijdens publish bij het maken van zelfstandige toepassingen, doe het volgende:

  • 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 op true.

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 publishkiest u een van de volgende opties:

  1. Geef de voorkeur aan gedrag dat afhankelijk is 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 TargetLatestRuntimePatch in als false in het projectbestand.

  2. 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 vereist is geïnstalleerd, stelt u TargetLatestRuntimePatch op true in het projectbestand.

  3. Neem expliciet beheer over de runtime framework-versie door RuntimeFrameworkVersion in te stellen op de specifieke patchversie in het projectbestand.