Delen via


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

restorebuild 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 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 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 in false op 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 is geïnstalleerd, stelt u deze in TargetLatestRuntimePatchtrue het projectbestand in.

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