Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek se vztahuje na: ✔️ .NET 6 SDK a novější verze
Jméno
dotnet publish – Publikuje aplikaci a její závislosti do složky pro nasazení do hostitelského systému.
Přehled
dotnet publish [<PROJECT>|<SOLUTION>|<FILE>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [--disable-build-servers]
[-f|--framework <FRAMEWORK>] [--force] [--interactive]
[--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
[--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
[--os <OS>] [-p|--property:<PROPERTYNAME>=<VALUE>]
[-r|--runtime <RUNTIME_IDENTIFIER>]
[--sc|--self-contained] [--no-self-contained]
[-s|--source <SOURCE>] [--tl:[auto|on|off]]
[--ucr|--use-current-runtime]
[-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
dotnet publish -h|--help
Popis
dotnet publish zkompiluje aplikaci, přečte 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 IL (Intermediate Language) v sestavení s dll rozšíření.
- 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 příkazu dotnet publish je připravený k nasazení do hostitelského systému (například serveru, počítače PC, Počítače Mac, přenosného počítače) 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 Přehled publikování aplikací .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 publisha dotnet pack. Pokud chcete zakázat implicitní obnovení, použijte možnost --no-restore.
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 dokumentaci dotnet restore.
MSBuild
Příkaz dotnet publish volá nástroj MSBuild, který vyvolá cíl Publish. Pokud je vlastnost IsPublishable nastavená na false pro konkrétní projekt, nelze Publish cíl vyvolat a příkaz dotnet publish spustí implicitní dotnet restore v projektu.
Všechny parametry předané dotnet publish se předají msBuildu. Parametry -c a -o se mapuje na vlastnosti Configuration nástroje MSBuild a PublishDir.
Příkaz dotnet publish přijímá možnosti nástroje MSBuild, například -p pro nastavení vlastností a -l pro definování protokolovacího nástroje. Můžete například nastavit vlastnost MSBuild pomocí formátu: -p:<NAME>=<VALUE>.
Soubory .pubxml
Vlastnosti související s publikováním můžete také nastavit odkazem na soubor .pubxml. Například:
dotnet publish -p:PublishProfile=FolderProfile
Předchozí příklad používá soubor FolderProfile.pubxml, který je nalezen ve složce <project_folder>/Properties/PublishProfile s. Pokud při nastavování vlastnosti PublishProfile zadáte cestu a příponu souboru, budou ignorovány. MsBuild ve výchozím nastavení hledá ve složce Properties/PublishProfile s a předpokládá pubxml příponu souboru. Chcete-li zadat cestu a název souboru včetně přípony, nastavte vlastnost PublishProfileFullPath místo vlastnosti PublishProfile.
V souboru .pubxml:
-
PublishUrlpoužívá Visual Studio k označení cíle publikování. -
PublishDirpoužívá rozhraní příkazového řádku k označení cíle publikování.
Pokud chcete, aby scénář fungoval na všech místech, můžete obě tyto vlastnosti inicializovat na stejnou hodnotu v souboru .pubxml. Pokud se problém s GitHubem dotnet/sdk#20931 vyřeší, bude potřeba nastavit jenom jednu z těchto vlastností.
Některé vlastnosti v souboru .pubxml jsou dodrženy pouze sadou Visual Studio a nemají žádný vliv na dotnet publish. Pracujeme na tom, aby bylo rozhraní příkazového řádku více v souladu s chováním sady Visual Studio. Rozhraní příkazového řádku ale nebude nikdy používat některé vlastnosti. Rozhraní příkazového řádku i Visual Studio dělají aspekty publikování a dotnet/sdk#29817 plány přidání podpory dalších vlastností souvisejících s tím. Rozhraní příkazového řádku ale neprovádí aspekt automatizace nasazení publikování a vlastností souvisejících s tím, které nejsou podporované. Nejdůležitější vlastnosti .pubxml, které nejsou podporovány dotnet publish jsou následující vlastnosti, které mají vliv na sestavení:
LastUsedBuildConfigurationConfigurationPlatformLastUsedPlatformTargetFrameworkTargetFrameworksRuntimeIdentifierRuntimeIdentifiers
Vlastnosti nástroje MSBuild
Následující vlastnosti nástroje MSBuild mění výstup dotnet publish.
PublishReadyToRunKompiluje sestavení aplikace jako formát ReadyToRun (R2R). R2R je forma předběžné kompilace (AOT). Další informace naleznete 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 místo příkazového řádku zadat
PublishReadyToRunv profilu publikování.PublishSingleFileZabalí aplikaci do spustitelného souboru specifického pro platformu. Další informace o publikování s jedním souborem naleznete v návrhový dokument s jedním souborem bundler. Pokud je tato vlastnost nastavena
truenaPublishSelfContained, vlastnost je implicitně nastavena natrue.Tuto možnost doporučujeme zadat v souboru projektu, nikoli na příkazovém řádku.
PublishTrimmedOří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 Střih samostatný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 najdete v následujících zdrojích informací:
- referenční příkazového řádku NÁSTROJE MSBuild
- profily publikování sady Visual Studio (.pubxml) pro nasazení aplikace ASP.NET Core
- dotnet msbuild
Stažení manifestu úloh
Při spuštění tohoto příkazu zahájí asynchronní stahování reklamních manifestů pro úlohy. Pokud stahování po dokončení tohoto příkazu stále běží, stahování se zastaví. Další informace naleznete v tématu Reklamní manifesty.
Argumenty
PROJECT | SOLUTION | FILE
Projekt nebo řešení nebo soubor jazyka C# (souborová aplikace), na kterém se má pracovat. Pokud není zadaný soubor, nástroj MSBuild vyhledá aktuální adresář projektu nebo řešení.
PROJECTje cesta a název souboru projektu jazyka C#, F# nebo jazyka Visual Basic nebo cesty k adresáři, který obsahuje soubor projektu jazyka C#, F# nebo Visual Basic.SOLUTIONje cesta a název souboru řešení (.sln nebo přípony .slnx) nebo cesta k adresáři, který obsahuje soubor řešení.FILEje argument přidaný v .NET 10. Cesta a název souboru aplikace. Aplikace založené na souborech jsou obsaženy v jednom souboru, který je sestaven a spuštěn bez odpovídajícího souboru projektu (.csproj). Další informace najdete v tématu Vytváření souborových aplikací jazyka C#.
Možnosti
-
-a|--arch <ARCHITECTURE>Určuje cílovou architekturu. Toto je zkratka pro nastavení identifikátoru Runtime Identifier (RID), kde se zadaná hodnota zkombinuje s výchozím identifikátorem RID. Například na
win-x64počítači určuje,--arch x86nastaví identifikátor RID nawin-x86. Pokud použijete tuto možnost, nepoužívejte možnost-r|--runtime. K dispozici od verze .NET 6 Preview 7. -
--artifacts-path <ARTIFACTS_DIR>Všechny výstupní soubory sestavení ze spuštěného příkazu budou v podsložkách pod zadanou cestou oddělenou projektem. Další informace naleznete v tématu rozložení výstupu artefaktů. K dispozici od sady .NET 8 SDK.
-
-c|--configuration <CONFIGURATION>Definuje konfiguraci sestavení. Pokud vyvíjíte pomocí sady .NET 8 SDK nebo novější verze, použije příkaz ve výchozím nastavení konfiguraci
Releasepro projekty, jejichž TargetFramework je nastavená nanet8.0nebo novější verzi. Výchozí konfigurace sestavení jeDebugpro starší verze sady SDK a pro starší cílové architektury. Výchozí nastavení projektu můžete přepsat nebo můžete použít tuto možnost. Další informace najdete v tématu "dotnet publish" používá konfigurace vydané verze a 'dotnet pack' používá release configuration. -
--disable-build-serversVynutí příkaz ignorovat všechny trvalé buildové servery. Tato možnost poskytuje konzistentní způsob, jak zakázat veškeré použití ukládání sestavení do mezipaměti, což vynutí sestavení úplně od začátku. Sestavení, které nespoléhá na mezipaměti, je užitečné, když jsou mezipaměti z nějakého důvodu poškozené nebo nesprávné. K dispozici od sady .NET 7 SDK.
-f|--framework <FRAMEWORK>Publikuje aplikaci pro zadanou cílovou architekturu . V souboru projektu je nutné zadat cílovou architekturu.
--forceVynutí 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.
-
--interactiveUmožňuje příkazu zastavit a čekat na uživatelský vstup nebo akci. Například k dokončení ověřování.
--manifest <PATH_TO_MANIFEST_FILE>Určuje jeden nebo několik cílových manifestů, použít k oříznutí sady balíčků publikovaných v aplikaci. Soubor manifestu je součástí výstupu příkazu
dotnet store. Pokud chcete zadat více manifestů, přidejte pro každý manifest možnost--manifest.--no-buildNevytvoře projekt před publikováním. Také implicitně nastaví příznak
--no-restore.--no-dependenciesIgnoruje odkazy projektu na projekt a obnoví pouze kořenový projekt.
--nologoNezobrazuje úvodní banner ani zprávu o autorských právech.
--no-restorePři spuštění příkazu nespustí implicitní obnovení.
-o|--output <OUTPUT_DIRECTORY>Určuje cestu pro výstupní adresář.
Pokud není zadaný, ve výchozím nastavení se [project_file_folder]/bin/[konfigurace]/[framework]/publish/ pro spustitelný soubor závislý na rozhraní a binární soubory pro různé platformy. Výchozí hodnota je [project_file_folder]/bin/[konfigurace]/[framework]/[runtime]/publish/ pro samostatný spustitelný soubor.
Pokud je výstupní složka ve webovém projektu ve složce projektu, následné
dotnet publishpříkazy vedou k vnořeným výstupním složkám. Pokud je například složka projektu projektu a výstupní složka publikování je projekt/publikovánía spustítedotnet publishdvakrát, druhé spuštění vloží soubory obsahu, jako jsou .config a .json soubory do myproject/publish. Pokud se chcete vyhnout vnoření složek publikování, zadejte složku publikování, která není přímo ve složce projektu, nebo vyloučíte složku publikování z projektu. Chcete-li vyloučit složku publish s názvem publishoutput, přidejte doPropertyGroupelementu .csproj:<DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>Sada .NET 7.0.200 SDK a novější
Pokud při spuštění tohoto příkazu v řešení zadáte možnost
--output, rozhraní příkazového řádku vygeneruje upozornění (chyba ve verzi 7.0.200) kvůli nejasné sémantice výstupní cesty. Možnost--outputje zakázána, protože všechny výstupy všech sestavených projektů by se zkopírovaly do zadaného adresáře, který není kompatibilní s více cílenými projekty a projekty, které mají různé verze přímých a tranzitivních závislostí. Další informace najdete v tématu možnost--outputna úrovni řešení již neplatí pro příkazy související s sestavením..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, 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. Pokud chcete výstup publikování provést, přejděte do samostatných složek pro každý projekt, místo možnosti
PublishDirzadejte relativní cestu pomocí vlastnosti msbuild--output. Napříkladdotnet publish -p:PublishDir=.\publishodesílá výstup publikování pro každý projekt do složkypublishve složce, která obsahuje soubor projektu.
-
--os <OS>Určuje cílový operační systém (OS). Toto je zkratka pro nastavení identifikátoru Runtime Identifier (RID), kde se zadaná hodnota zkombinuje s výchozím identifikátorem RID. Například na
win-x64počítači určuje,--os linuxnastaví identifikátor RID nalinux-x64. Pokud použijete tuto možnost, nepoužívejte možnost-r|--runtime. K dispozici od .NET 6. -
--sc|--self-containedPublikujte modul runtime .NET s vaší aplikací, aby se modul runtime nemusel instalovat na cílový počítač.
-p|--property:<PROPERTYNAME>=<VALUE>Nastaví jednu nebo více vlastností nástroje MSBuild. Zadejte více vlastností oddělených středníky nebo opakováním možnosti:
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>-
--no-self-containedPublikujte aplikaci jako aplikaci závislou na rozhraní. Aby bylo možné spustit aplikaci, musí být na cílovém počítači nainstalovaný kompatibilní modul runtime .NET.
--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 vkatalogu identifikátorů RID
. Další informace najdete v tématu Přehled publikování aplikací .NET. Pokud použijete tuto možnost, použijte také --self-containednebo--no-self-contained.-
--tl:[auto|on|off]Určuje, jestli se má pro výstup sestavení použít terminálový protokolovací nástroj . Výchozí hodnota je
auto, která nejprve ověří prostředí před povolením protokolování terminálu. Prostředí ověřuje, že terminál dokáže používat moderní výstupní funkce a nepoužívá přesměrovaný standardní výstup, než povolí nový protokolovací modul.onpřeskočí kontrolu prostředí a povolí protokolování terminálu.offpřeskočí kontrolu prostředí a použije výchozí protokolovací nástroj konzoly.Terminal Logger ukazuje fázi obnovení následovanou fází sestavení. Během každé fáze se aktuálně stavební projekty zobrazují v dolní části terminálu. Každý projekt, který vytváří výstupy cíle NÁSTROJE MSBuild, který se právě sestavuje, i dobu strávenou na daném cíli. Další informace o sestavení najdete v těchto informacích. Po dokončení sestavení projektu se zapíše jeden oddíl "sestavení dokončeno", který zachycuje:
- Název sestaveného projektu.
- Cílová architektura (pokud je cílená na více cílů).
- Stav tohoto sestavení.
- Primární výstup tohoto sestavení (který je hypertextový odkaz).
- Všechna diagnostika vygenerovaná pro tento projekt.
Tato možnost je dostupná od verze .NET 8.
-
--ucr|--use-current-runtimePoužijte aktuální modul runtime jako cílový modul runtime.
-
-v|--verbosity <LEVEL>Nastaví úroveň podrobností příkazu. Povolené hodnoty jsou
q[uiet],m[inimal],n[ormal],d[etailed]adiag[nostic]. Výchozí hodnota jeminimal. Další informace najdete v tématu LoggerVerbosity. --version-suffix <VERSION_SUFFIX>Definuje příponu verze, která nahradí hvězdičku (
*) v poli verze souboru projektu.-
-?|-h|--helpVytiskne popis použití příkazu.
Příklady
Vytvořte binární pro pro projekt v aktuálním adresáři závislý na
architektury: dotnet publishPočínaje sadou .NET Core 3.0 SDK tento příklad také vytvoří spustitelný soubor závislý na rozhraní
pro aktuální platformu. Vytvořte samostatný spustitelný soubor pro projekt v aktuálním adresáři pro konkrétní modul runtime:
dotnet publish --runtime osx-x64Identifiká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-x64 --self-contained falseIdentifikátor RID musí být v souboru projektu. Tento příklad platí pro sadu .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 net8.0 --runtime osx-x64Publikujte zadaný soubor projektu:
dotnet publish ~/projects/app1/app1.csprojPublikujte aktuální aplikaci, ale neobnovujte odkazy projektu na projekt (P2P), pouze kořenový projekt během operace obnovení:
dotnet publish --no-dependenciesPublikujte program jazyka C# založený na souborech app.cs v aktuálním adresáři:
dotnet publish app.csPodpora programů založená na souborech byla přidána do sady .NET SDK 10.0.100.
Viz také
- přehled publikování aplikací .NET
- cílové architektury
- katalogu identifikátorů modulu runtime
(RID) - kontejnerizace aplikace .NET s publikováním dotnet
Práce s notářské macOS Catalina- adresářová struktura publikované aplikace
- referenční příkazového řádku NÁSTROJE MSBuild
- profily publikování sady Visual Studio (.pubxml) pro nasazení aplikace ASP.NET Core
- dotnet msbuild
- oříznout samostatná nasazení