dotnet publish

Tento článek se týká: ✔️ .net Core 2,1 SDK a novějších verzí

Název

dotnet publish -Publikuje aplikaci a její závislosti do složky pro nasazení do hostitelského systému.

Stručný obsah

dotnet publish [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
    [-f|--framework <FRAMEWORK>] [--force] [--interactive]
    [--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
    [--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
    [-r|--runtime <RUNTIME_IDENTIFIER>] [--self-contained [true|false]]
    [--no-self-contained] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet publish -h|--help

Description

dotnet publish zkompiluje aplikaci, přečte prostřednictvím svých závislostí zadaných v souboru projektu a publikuje výslednou sadu souborů do adresáře. Výstup obsahuje následující prostředky:

  • Kód zprostředkujícího jazyka (IL) v sestavení s příponou DLL .
  • .deps.jsv souboru, který obsahuje všechny závislosti projektu.
  • .runtimeconfig.jsv souboru, který určuje sdílený modul runtime, který aplikace očekává, a další možnosti konfigurace pro modul runtime (například typ uvolňování paměti).
  • závislosti aplikace, které jsou zkopírovány z mezipaměti NuGet do výstupní složky.

dotnet publishVýstup příkazu je připravený k nasazení do hostitelského systému (například server, počítač, Mac, notebook) k provedení. Jedná se o jediný oficiálně podporovaný způsob, jak připravit aplikaci pro nasazení. V závislosti na typu nasazení, které projekt určuje, hostující systém může nebo nemusí mít nainstalovaný modul runtime Shared .NET. Další informace najdete v tématu publikování aplikací .NET pomocí rozhraní příkazového řádku .NET.

Implicitní obnovení

Nemusíte spouštět dotnet restore , protože se spouští implicitně všemi příkazy, které vyžadují obnovení, například dotnet new , dotnet build , dotnet run , dotnet test , dotnet publish a dotnet pack . Pokud chcete zakázat implicitní obnovení, použijte --no-restore možnost.

dotnet restorePříkaz je stále užitečný v některých scénářích, kde explicitní obnovení dává smysl, jako je například průběžná integrace sestavení v Azure DevOps Services nebo v systémech sestavení, které potřebují explicitně řídit, kdy dojde k obnovení.

Informace o tom, jak spravovat kanály NuGet, najdete v dotnet restore dokumentaci.

MSBuild

dotnet publishpříkaz volá MSBuild, která vyvolá Publish cíl. Pokud je IsPublishable vlastnost nastavena na false pro konkrétní projekt, Publish cíl nelze vyvolat a dotnet publish příkaz spustí v projektu pouze implicitní dotnet Restore .

Všechny parametry předané do dotnet publish jsou předány do MSBuild. -cparametry a jsou -o mapovány na MSBuild Configuration a PublishDir vlastnosti, v uvedeném pořadí.

dotnet publishpříkaz přijímá MSBuild možnosti, například -p pro nastavení vlastností a -l k definování protokolovacího nástroje. můžete například nastavit vlastnost MSBuild pomocí formátu: -p:<NAME>=<VALUE> .

Vlastnosti související s publikováním můžete také nastavit tak, že odkazujete na soubor . pubxml (k dispozici od verze .net Core 3,1 SDK). Příklad:

dotnet publish -p:PublishProfile=FolderProfile

Předchozí příklad používá soubor FolderProfile. pubxml , který se nachází ve složce <project_folder> /Properties/PublishProfiles . Pokud při nastavování vlastnosti určíte cestu a příponu souboru PublishProfile , budou ignorovány. MSBuild ve výchozím nastavení vyhledává ve složce Properties/PublishProfiles a předpokládá příponu souboru pubxml . Chcete-li zadat cestu a název souboru včetně přípony, nastavte PublishProfileFullPath vlastnost namísto PublishProfile Vlastnosti.

následující vlastnosti MSBuild změní výstup dotnet publish .

  • PublishReadyToRun

    Zkompiluje sestavení aplikace jako formát ReadyToRun (R2R). R2R je forma kompilace v čase před zahájením (AOT). Další informace najdete v tématu ReadyToRun images. K dispozici od verze .NET Core 3,0 SDK.

    Chcete-li zobrazit upozornění týkající se chybějících závislostí, které by mohly způsobit chyby za běhu, použijte PublishReadyToRunShowWarning=true .

    Doporučujeme zadat PublishReadyToRun v profilu publikování místo na příkazovém řádku.

  • PublishSingleFile

    Zabalí aplikaci do spustitelného souboru s jedním souborem konkrétní platformy. Další informace o publikování v jednom souboru najdete v dokumentu návrhu sady prostředků s jedním souborem. K dispozici od verze .NET Core 3,0 SDK.

    Doporučujeme zadat tuto možnost v souboru projektu, a ne na příkazovém řádku.

  • PublishTrimmed

    Ořízne nepoužívané knihovny, aby se snížila velikost nasazení aplikace při publikování samostatného spustitelného souboru. Další informace najdete v tématu stříhání samostatných nasazení a spustitelných souborů. K dispozici vzhledem k tomu, že sada SDK .NET Core 3,0 jako funkce Preview

    Doporučujeme zadat tuto možnost v souboru projektu, a ne na příkazovém řádku.

Další informace naleznete v následujících zdrojích:

Stažení manifestu úlohy

Když spustíte tento příkaz, inicializuje asynchronní stahování reklamních manifestů na pozadí pro úlohy. Pokud je stahování pořád spuštěné po dokončení tohoto příkazu, stahování se zastaví. Další informace najdete v tématu inzerování manifestů.

Argumenty

  • PROJECT|SOLUTION

    Projekt nebo řešení, které se má publikovat

    • PROJECTje cesta a název souboru projektu jazyka c#, f # nebo Visual Basic nebo cesta k adresáři, který obsahuje soubor projektu jazyka c#, f # nebo Visual Basic. Pokud adresář není zadaný, použije se ve výchozím nastavení aktuální adresář.

    • SOLUTION je cesta a název souboru řešení (. sln rozšíření) nebo cesta k adresáři, který obsahuje soubor řešení. Pokud adresář není zadaný, použije se ve výchozím nastavení aktuální adresář. K dispozici od verze .NET Core 3,0 SDK.

Možnosti

  • -c|--configuration <CONFIGURATION>

    Definuje konfiguraci sestavení. Výchozí hodnota pro většinu projektů je , ale můžete přepsat nastavení konfigurace Debug sestavení ve vašem projektu.

  • -f|--framework <FRAMEWORK>

    Publikuje aplikaci pro zadanou cílovou architekturu. V souboru projektu je nutné zadat cílovou architekturu.

  • --force

    Vynutí vyřešení všech závislostí i v případě, že bylo poslední obnovení úspěšné. Zadání tohoto příznaku je stejné jako odstranění project.assets.jsv souboru.

  • -?|-h|--help

    Vytiskne popis použití příkazu .

  • --interactive

    Umožňuje zastavení příkazu zastavit a počkat na vstup nebo akci uživatele. Například k dokončení ověřování. K dispozici od verze .NET Core 3,0 SDK.

  • --manifest <PATH_TO_MANIFEST_FILE>

    Určuje jeden nebo několik cílových manifestů , které se použijí ke zkrácení sady balíčků publikovaných s aplikací. Soubor manifestu je součástí výstupu dotnet store příkazu. Chcete-li zadat více manifestů, přidejte --manifest možnost pro každý manifest.

  • --no-build

    Nevytvoří projekt před publikováním. Také implicitně nastaví --no-restore příznak.

  • --no-dependencies

    Ignoruje odkazy z projektu na projekt a obnoví pouze kořenový projekt.

  • --nologo

    Nezobrazuje úvodní nápis nebo zprávu o autorských právech. K dispozici od verze .NET Core 3,0 SDK.

  • --no-restore

    Při spuštění příkazu neprovede implicitní obnovení.

  • -o|--output <OUTPUT_DIRECTORY>

    Určuje cestu k výstupnímu adresáři.

    Pokud není zadaný, použije se výchozí hodnota [project_file_folder]/bin/[Configuration]/[Framework]/Publish/ pro spustitelný soubor závislý na rozhraní a binární soubory pro různé platformy. Pro samostatně uložený spustitelný soubor má výchozí nastavení [project_file_folder]/bin/[Configuration]/[Framework]/[runtime]/Publish/ .

    Je-li výstupní složka ve webovém projektu ve složce projektu, dotnet publish výsledkem úspěchu příkazů jsou vnořené výstupní složky. Pokud je například složka projektu MyProject a výstupní složka pro publikování je MyProject/Publish a dotnet publish dvakrát spustíte, druhý příkaz spustí do MyProject/Publish/ Publish soubory obsahu, například .config a soubory . JSON . Chcete-li se vyhnout vnořování publikačních složek, zadejte složku pro publikování, která není přímo ve složce projektu, nebo vylučte složku pro publikování z projektu. Chcete-li vyloučit složku pro publikování s názvem publishoutput, přidejte následující element do PropertyGroup elementu v souboru . csproj :

    <DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>
    
    • .NET Core 3. x SDK a novější

      Pokud při publikování projektu zadáte relativní cestu, vygenerovaný výstupní adresář je relativní vzhledem k aktuálnímu pracovnímu adresáři, nikoli k umístění souboru projektu.

      Pokud při publikování řešení zadáte relativní cestu, veškerý výstup pro všechny projekty přejde do zadané složky vzhledem k aktuálnímu pracovnímu adresáři. Chcete-li, aby výstup pro publikování přešel do samostatných složek pro každý projekt, zadejte relativní cestu pomocí PublishDir vlastnosti MSBuild namísto --output Možnosti. Například dotnet publish -p:PublishDir=.\publish odesílá výstup publikování pro každý projekt do publish složky ve složce, která obsahuje soubor projektu.

    • Sada .NET Core 2. x SDK

      Pokud při publikování projektu zadáte relativní cestu, vygenerovaný výstupní adresář je relativní vzhledem k umístění souboru projektu, nikoli k aktuálnímu pracovnímu adresáři.

      Pokud při publikování řešení zadáte relativní cestu, výstup každého projektu přejde do samostatné složky vzhledem k umístění souboru projektu. Pokud při publikování řešení zadáte absolutní cestu, veškerý výstup publikování pro všechny projekty přejde do zadané složky.

  • --self-contained [true|false]

    Publikuje modul .NET runtime s vaší aplikací, takže v cílovém počítači není nutné instalovat modul runtime. Výchozí hodnota je true , pokud je zadán identifikátor modulu runtime a projekt je spustitelný projekt (ne projekt knihovny). Další informace najdete v tématu publikování aplikace .NET a publikování aplikací .NET pomocí rozhraní příkazového řádku .NET.

    Pokud je tato možnost použita bez zadání true nebo false , je výchozí hodnota true . V takovém případě neumísťujte argument řešení nebo projektu hned po --self-contained , protože true nebo false se na této pozici očekává.

  • --no-self-contained

    Ekvivalent --self-contained false . K dispozici od verze .NET Core 3,0 SDK.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Publikuje aplikaci pro daný modul runtime. Seznam identifikátorů modulu runtime (identifikátorů RID) najdete v katalogu RID. Další informace najdete v tématu publikování aplikace .NET a publikování aplikací .NET pomocí rozhraní příkazového řádku .NET.

  • -v|--verbosity <LEVEL>

    Nastaví úroveň podrobností příkazu. Povolené hodnoty jsou q[uiet] , m[inimal] ,, a n[ormal] d[etailed] diag[nostic] . Výchozí formát je minimal. Další informace naleznete v tématu LoggerVerbosity.

  • --version-suffix <VERSION_SUFFIX>

    Definuje příponu verze, která nahradí hvězdičku ( * ) v poli verze souboru projektu.

Příklady

  • Vytvořte binární soubor pro více platforem závislý na rozhraní pro projekt v aktuálním adresáři:

    dotnet publish
    

    Počínaje verzí .NET Core 3,0 SDK tento příklad také vytvoří spustitelný soubor závislý na rozhraní pro aktuální platformu.

  • Vytvoření samostatného spustitelného souboru pro projekt v aktuálním adresáři pro konkrétní modul runtime:

    dotnet publish --runtime osx.10.11-x64
    

    Identifikátor RID musí být v souboru projektu.

  • Vytvořte spustitelný soubor závislý na rozhraní pro projekt v aktuálním adresáři pro konkrétní platformu:

    dotnet publish --runtime osx.10.11-x64 --self-contained false
    

    Identifikátor RID musí být v souboru projektu. Tento příklad platí pro .NET Core 3,0 SDK a novější verze.

  • Publikování projektu v aktuálním adresáři pro konkrétní modul runtime a cílové rozhraní:

    dotnet publish --framework netcoreapp3.1 --runtime osx.10.11-x64
    
  • Publikovat zadaný soubor projektu:

    dotnet publish ~/projects/app1/app1.csproj
    
  • Publikování aktuální aplikace, ale neobnovujte odkazy na projekt na projekt (P2P), pouze kořenový projekt během operace obnovení:

    dotnet publish --no-dependencies
    

Viz také