Sdílet prostřednictvím


Samostatné nasazení – dopředné posunutí modulu runtime

Samostatná nasazení aplikací .NET Core zahrnují knihovny .NET Core i modul runtime .NET Core. Počínaje sadou .NET Core 2.1 SDK (verze 2.1.300) publikuje nasazení samostatné aplikace na vašem počítači nejvyšší modul runtime oprav. Ve výchozím nastavení dotnet publish pro samostatné nasazení vybere nejnovější verzi nainstalovanou jako součást sady SDK na počítači publikování. To umožňuje, aby vaše nasazená aplikace běžela s opravami zabezpečení (a dalšími opravami), které jsou k dispozici během publish. Aby bylo možné získat novou opravu, musí být aplikace znovu publikována. Samostatné aplikace se vytvářejí zadáním -r <RID> příkazu dotnet publish nebo zadáním identifikátoru runtime (RID) v souboru projektu (csproj / vbproj) nebo na příkazovém řádku.

Přehled postupného uvedení verze opravy

restorebuild a publish jsou dotnet příkazy, které se dají spustit samostatně. Volba modulu runtime je součástí restore operace, nikoli publish nebo build. Pokud zavoláte publish, zvolí se nejnovější verze opravy. Pokud zavoláte publish s argumentem --no-restore , pravděpodobně nebudete mít požadovanou verzi opravy, protože předchozí restore verze nebyla provedena s novou samostatnou zásadou publikování aplikací. V tomto případě se vygeneruje chyba sestavení s textem podobným následujícímu:

Projekt byl obnoven pomocí Microsoft.NETCore.App verze 2.0.0, ale s aktuálním nastavením by se místo toho použila verze 2.0.6. Pokud chcete tento problém vyřešit, ujistěte se, že se pro obnovení a následné operace, jako je sestavení nebo publikování, používají stejná nastavení. K tomuto problému obvykle může dojít, pokud je vlastnost RuntimeIdentifier nastavena během sestavení nebo publikování, ale ne během obnovení."

Poznámka:

restore a build lze je spustit implicitně jako součást jiného příkazu, například publish. Když se spustí implicitně jako součást jiného příkazu, zobrazí se jim další kontext, aby se vytvořily správné artefakty. Pokud používáte publish modul runtime (například dotnet publish -r linux-x64), implicitní restore obnovení balíčků pro modul runtime linux-x64. Pokud voláte restore explicitně, ve výchozím nastavení neobnoví balíčky modulu runtime, protože tento kontext nemá.

Jak se vyhnout obnovení během publikování

Spuštění restore v rámci publish operace může být pro váš scénář nežádoucí. Pokud se chcete vyhnout restore během publish vytváření samostatných aplikací, postupujte takto:

  • RuntimeIdentifiers Nastavte vlastnost na seznam oddělený středníkem všech identifikátorů RID, které se mají publikovat.
  • Nastavte vlastnost TargetLatestRuntimePatch na true.

Argument bez obnovení s možnostmi publikování dotnet

Pokud chcete vytvořit samostatné aplikace i aplikace závislé na rozhraní se stejným souborem projektu a chcete použít --no-restore argument s dotnet publish, zvolte jednu z následujících možností:

  1. Preferujte chování závislé na rozhraní. Pokud je aplikace závislá na rozhraní, jedná se o výchozí chování. Pokud je aplikace samostatná a může použít nepatchovaný místní modul runtime 2.1.0, nastavte TargetLatestRuntimePatch hodnotu v false souboru projektu.

  2. Upřednostňujte samostatné chování. Pokud je aplikace samostatná, jedná se o výchozí chování. Pokud je aplikace závislá na rozhraní a vyžaduje nainstalovanou nejnovější opravu, nastavte TargetLatestRuntimePatch ji v true souboru projektu.

  3. Převezměte explicitní kontrolu nad verzí modulu runtime tak, že v souboru projektu nastavíte RuntimeFrameworkVersion konkrétní verzi opravy.