dotnet publish

Tento článek se vztahuje na: ✔️ .NET Core 3.1 SDK a novější verze

Název

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

Synopse

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

dotnet publish -h|--help

Description

dotnet publish zkompiluje aplikaci, přečte si její závislosti zadané v souboru projektu a publikuje výslednou sadu souborů do adresáře. Výstup zahrnuje následující prostředky:

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

Výstup dotnet publish příkazu je připravený k nasazení do hostitelského systému (například na server, počítač PC, Mac, přenosný počítač) pro spuštění. Je to jediný oficiálně podporovaný způsob přípravy aplikace na nasazení. V závislosti na typu nasazení, které projekt určuje, může hostitelský systém nebo nemusí mít na něm nainstalovaný sdílený modul runtime .NET. Další informace najdete v tématu Publikování aplikací .NET pomocí rozhraní příkazového řádku .NET.

Implicitní obnovení

Nemusíte spouštětdotnet restore, protože se spouští implicitně všemi příkazy, které vyžadují obnovení, například dotnet new, , dotnet testdotnet publishdotnet builddotnet runa .dotnet pack Pokud chcete zakázat implicitní obnovení, použijte --no-restore tuto možnost.

Příkaz dotnet restore je stále užitečný v určitých scénářích, kdy explicitní obnovení dává smysl, například sestavení kontinuální integrace v Azure DevOps Services nebo v systémech sestavení, které potřebují explicitně řídit, kdy dojde k obnovení.

Informace o správě informačních kanálů NuGet najdete v dotnet restore dokumentaci.

MSBuild

Příkaz dotnet publish volá MSBuild, který vyvolá Publish cíl. IsPublishable Pokud je vlastnost nastavená pro false konkrétní projekt, Publish cíl se nedá vyvolat a dotnet publish příkaz spustí implicitní obnovení dotnet pouze v projektu.

Všechny parametry předané MSBuilddotnet publish. Parametry -c se -o mapuje na MSBuild Configuration a PublishDir vlastnosti.

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

Můžete také nastavit vlastnosti související s publikováním odkazem na soubor .pubxml . Příklad:

dotnet publish -p:PublishProfile=FolderProfile

Předchozí příklad používá soubor FolderProfile.pubxml , který je nalezen ve <složce project_folder>/Properties/PublishProfiles . Pokud při nastavování vlastnosti zadáte cestu a příponu PublishProfile souboru, budou ignorovány. MSBuild ve výchozím nastavení vypadá 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 místo PublishProfile vlastnosti.

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

  • PublishReadyToRun

    Kompiluje sestavení aplikací jako formát ReadyToRun (R2R). R2R je forma předběžné kompilace (AOT). Další informace najdete v tématu ReadyToRun images.

    Pokud chcete zobrazit upozornění týkající se chybějících závislostí, které by mohly způsobit selhání modulu runtime, použijte PublishReadyToRunShowWarnings=true.

    Doporučujeme, abyste místo na příkazovém řádku zadali PublishReadyToRun profil publikování.

  • PublishSingleFile

    Zabalí aplikaci do spustitelného souboru specifického pro platformu. Další informace o publikování s jedním souborem najdete v návrhovém dokumentu s jedním souborem bundleru.

    Tuto možnost doporučujeme zadat v souboru projektu, nikoli na příkazovém řádku.

  • PublishTrimmed

    Oříznou 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 Oříznutí samoobslužných nasazení a spustitelných souborů. K dispozici od sady .NET 6 SDK.

    Tuto možnost doporučujeme zadat v souboru projektu, nikoli na příkazovém řádku.

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

Stažení manifestu úloh

Když spustíte tento příkaz, zahájí asynchronní stahování manifestů reklamy pro úlohy. Pokud stahování po dokončení tohoto příkazu stále běží, stahování se zastaví. Další informace najdete v tématu Inzerce manifestů.

Argumenty

  • PROJECT|SOLUTION

    Projekt nebo řešení pro publikování.

    • PROJECTje cesta a název souboru projektu C#, F# nebo Visual Basic nebo cesty k adresáři, který obsahuje soubor projektu C#, F# nebo Visual Basic. Pokud adresář není zadaný, ve výchozím nastavení se nastaví na aktuální adresář.

    • SOLUTION je cesta a název souboru řešení (přípona .sln ) nebo cesta k adresáři, který obsahuje soubor řešení. Pokud adresář není zadaný, ve výchozím nastavení se nastaví na aktuální adresář.

Možnosti

  • -a|--arch <ARCHITECTURE>

    Určuje cílovou architekturu. Toto je zkratka pro nastavení identifikátoru runtime (RID), kde se zadaná hodnota zkombinuje s výchozím identifikátorem RID. Například na win-x64 počítači se zadáním --arch x86 identifikátoru RID nastavíte na win-x86. Pokud použijete tuto možnost, tuto možnost nepoužívejte -r|--runtime . K dispozici od .NET 6 Preview 7.

  • -c|--configuration <CONFIGURATION>

    Definuje konfiguraci sestavení. Výchozí hodnota pro většinu projektů je Debug, ale můžete přepsat nastavení konfigurace sestavení v 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 když bylo poslední obnovení úspěšné. Určení tohoto příznaku je stejné jako odstranění souboru project.assets.json .

  • -?|-h|--help

    Vytiskne popis použití příkazu.

  • --interactive

    Umožňuje, aby příkaz zastavil a čekal na vstup uživatele nebo akci. Například k dokončení ověřování. K dispozici od sady .NET Core 3.0 SDK.

  • --manifest <PATH_TO_MANIFEST_FILE>

    Určuje jeden nebo několik cílových manifestů , které se mají použít k oříznutí sady balíčků publikovaných v aplikaci. Soubor manifestu je součástí výstupu dotnet store příkazu. Pokud chcete zadat více manifestů, přidejte --manifest pro každý manifest možnost.

  • --no-build

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

  • --no-dependencies

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

  • --nologo

    Nezobrazuje se úvodní banner ani zpráva o autorských právech.

  • --no-restore

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

  • -o|--output <OUTPUT_DIRECTORY>

    Určuje cestu pro výstupní adresář.

    Pokud není zadaný, výchozí hodnota je [project_file_folder]/bin/[konfigurace]/[framework]/publish/ pro binární soubory závislé na rozhraní a binární soubory pro různé platformy. Výchozí hodnota je [project_file_folder]/bin/[configuration]/[framework]/[runtime]/publish/ pro samostatný spustitelný soubor.

    Pokud je výstupní složka ve složce projektu ve webovém projektu, následné dotnet publish příkazy vedou k vnořeným výstupním složkám. Pokud je například složka projektu můj projekt a výstupní složka publikování je moje projekt/publikování a spustíte dotnet publish dvakrát, druhé spuštění vloží soubory obsahu, jako jsou soubory .config a soubory .json v myproject/publish/publish. Chcete-li se vyhnout vnoření složek publikování, zadejte složku publikování, která není přímo ve složce projektu, nebo vylučte složku publikování z projektu. Pokud chcete vyloučit složku publish s názvem publishoutput, přidejte do elementu PropertyGroup v souboru .csproj následující prvek:

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

      Pokud při publikování projektu zadáte relativní cestu, je vygenerovaný výstupní adresář relativní vzhledem k aktuálnímu pracovnímu adresáři, ne 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. Pokud chcete publikovat výstup, přejděte do samostatných složek pro každý projekt, zadejte relativní cestu pomocí vlastnosti msbuild PublishDir místo --output možnosti. Odešle například dotnet publish -p:PublishDir=.\publish výstup publikování pro každý projekt do publish složky ve složce, která obsahuje soubor projektu.

    • .NET Core 2.x SDK

      Pokud při publikování projektu zadáte relativní cestu, je vygenerovaný výstupní adresář relativní vzhledem k umístění souboru projektu, ne 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.

  • --os <OS>

    Určuje cílový operační systém (OS). Toto je zkratka pro nastavení identifikátoru runtime (RID), kde se zadaná hodnota zkombinuje s výchozím identifikátorem RID. Například na win-x64 počítači se zadáním --os linux identifikátoru RID nastavíte na linux-x64. Pokud použijete tuto možnost, tuto možnost nepoužívejte -r|--runtime . K dispozici od .NET 6.

  • --sc|--self-contained [true|false]

    Publikuje modul runtime .NET s vaší aplikací, aby se modul runtime nemusel instalovat na cílový počítač. Výchozí hodnota je, pokud je true zadaný identifikátor modulu runtime a projekt je spustitelný projekt (ne projekt knihovny). Další informace najdete v tématu publikování aplikací .NET a publikování aplikací .NET pomocí rozhraní příkazového řádku .NET.

    Pokud se tato možnost používá bez zadání true nebo false, výchozí hodnota je true. V takovém případě nezadávejte argument řešení ani projektu hned za --self-contained, protože true nebo false se očekává v dané pozici.

  • --no-self-contained

    Ekvivalent k --self-contained false.

  • --source <SOURCE>

    Identifikátor URI zdroje balíčku NuGet, který se má použít během operace obnovení.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Publikuje aplikaci pro daný modul runtime. Seznam identifikátorů runtime (RID) najdete v katalogu RID. Další informace najdete v tématu publikování aplikací .NET a publikování aplikací .NET pomocí rozhraní příkazového řádku .NET. Pokud použijete tuto možnost, použijte --self-contained nebo --no-self-contained také.

  • -v|--verbosity <LEVEL>

    Nastaví úroveň podrobností příkazu. Povolené hodnoty jsou q[uiet], , m[inimal], d[etailed]n[ormal]a 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 závislý na rozhraní pro různé platformy pro projekt v aktuálním adresáři:

    dotnet publish
    

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

  • Vytvořte pro projekt v aktuálním adresáři samostatný spustitelný soubor 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.

  • Publikujte projekt v aktuálním adresáři pro konkrétní modul runtime a cílovou architekturu:

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

    dotnet publish ~/projects/app1/app1.csproj
    
  • Publikujte aktuální aplikaci, ale neobnovíte odkazy typu project-to-project (P2P), pouze kořenový projekt během operace obnovení:

    dotnet publish --no-dependencies
    

Viz také