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
Název
dotnet build – Sestaví projekt, řešení nebo souborovou aplikaci a všechny její závislosti.
Synopse
dotnet build [<PROJECT>|<SOLUTION>|<FILE>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>] [-bl|--binaryLogger:<FILE>]
[-c|--configuration <CONFIGURATION>] [--disable-build-servers]
[-f|--framework <FRAMEWORK>] [--force] [--interactive]
[--no-dependencies] [--no-incremental] [--no-restore] [--nologo]
[--no-self-contained] [-o|--output <OUTPUT_DIRECTORY>] [--os <OS>]
[-p|--property:<PROPERTYNAME>=<VALUE>] [-r|--runtime <RUNTIME_IDENTIFIER>]
[--sc|--self-contained] [--source <SOURCE>]
[--tl:[auto|on|off]] [ --ucr|--use-current-runtime]
[-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
dotnet build -h|--help
Popis
Příkaz dotnet build sestaví projekt, řešení nebo souborovou aplikaci a její závislosti do sady binárních souborů. Binární soubory zahrnují kód projektu v souborech IL (Intermediate Language) s příponou .dll . V závislosti na typu a nastavení projektu můžou být zahrnuty další soubory, například:
- Spustitelný soubor, který lze použít ke spuštění aplikace.
- Soubory symbolů používané k ladění s příponou .pdb .
- Soubor .deps.json , který obsahuje závislosti aplikace nebo knihovny.
- Soubor .runtimeconfig.json , který určuje sdílený modul runtime a jeho verzi pro aplikaci.
- Další knihovny, na které projekt závisí (prostřednictvím odkazů na projekt nebo odkazů na balíčky NuGet).
U spustitelných projektů, které cílí na .NET Core 3.0 a novější, se závislosti knihoven zkopírují do výstupní složky. To znamená, že pokud neexistuje žádná jiná logika specifická pro publikování (například webové projekty), měl by být výstup sestavení nasaditelný.
Implicitní obnovení
Sestavení vyžaduje soubor project.assets.json , který uvádí závislosti vaší aplikace. Soubor se vytvoří při dotnet restore spuštění. Bez souboru prostředků nemůže nástroj vyřešit referenční sestavení, což vede k chybám.
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 build, dotnet run, dotnet testdotnet publisha dotnet pack. Pokud chcete zakázat implicitní obnovení, použijte tuto --no-restore 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 ve službě 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.
Tento příkaz podporuje dotnet restore možnosti, které jsou předány v dlouhém formátu (například --source). Krátké možnosti formuláře, například -s, nejsou podporovány.
Výstup spustitelného souboru nebo knihovny
Určuje, zda je projekt spustitelný nebo není určen <OutputType> vlastností v souboru projektu. Následující příklad ukazuje projekt, který vytváří spustitelný kód:
<PropertyGroup>
<OutputType>Exe</OutputType>
</PropertyGroup>
Chcete-li vytvořit knihovnu, vynecháte <OutputType> vlastnost nebo změňte její hodnotu na Library. Knihovna DLL IL pro knihovnu neobsahuje vstupní body a nelze ji spustit.
MSBuild
dotnet build používá nástroj MSBuild k sestavení projektu, řešení nebo aplikace založené na souborech. Podporuje paralelní i přírůstková sestavení. Další informace naleznete v tématu Přírůstkové sestavení.
Kromě svých možností dotnet build příkaz přijímá možnosti NÁSTROJE MSBuild, například -p pro nastavení vlastností nebo -l definování protokolovacího nástroje. Další informace o těchtomožnostch Nebo můžete použít příkaz dotnet msbuild .
Poznámka:
Když dotnet build se spustí automaticky pomocí dotnet runargumentů, jako -property:property=value jsou nerespektované.
Spuštění dotnet build je ekvivalentní spuštění dotnet msbuild -restore. Výchozí úroveň podrobností výstupu se ale liší.
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 (RID), kde se zadaná hodnota zkombinuje s výchozím identifikátorem RID. Například na
win-x64počítači se zadáním--arch x86identifikátoru RID nastaví nawin-x86. Pokud použijete tuto možnost, tuto možnost nepoužívejte-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.
-bl|--binaryLogger:<FILE>Povolí binární protokolovací nástroj a volitelně určuje název výstupního souboru.
Pokud není zadaný žádný název souboru, výchozí hodnota jemsbuild.binlogv aktuálním adresáři.Binární protokol obsahuje podrobné informace o sestavení a lze je otevřít pomocí nástroje MSBuild Structured Log Viewer.
dotnet build -bl dotnet build -bl:build-log.binlog-
-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. -
--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>Zkompiluje pro konkrétní architekturu. Architektura musí být definována v souboru projektu. Příklady:
net7.0,net462.--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í.
--no-dependenciesIgnoruje odkazy typu projekt-projekt (P2P) a sestaví pouze zadaný kořenový projekt.
--no-incrementalOznačí sestavení jako nebezpečné pro přírůstkové sestavení. Tento příznak vypne přírůstkovou kompilaci a vynutí čisté opětovné sestavení grafu závislostí projektu.
--no-restoreBěhem sestavování nespustí implicitní obnovení.
--nologoNezobrazuje úvodní banner ani zprávu o autorských právech.
-
--no-self-containedEkvivalent
--self-contained false. -o|--output <OUTPUT_DIRECTORY>Adresář, do kterého se mají umístit sestavené binární soubory. Pokud není zadána, výchozí cesta je
./bin/<configuration>/<framework>/. U projektů s více cílovými architekturami (prostřednictvímTargetFrameworksvlastnosti) musíte také definovat--framework, kdy tuto možnost zadáte.Sada .NET 7.0.200 SDK a novější
Pokud při spuštění tohoto příkazu v řešení zadáte
--outputmožnost, 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 na úrovni--outputřešení již neplatí pro příkazy související s sestavením.
-
--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-x64počítači se zadáním--os linuxidentifikátoru RID nastaví nalinux-x64. Pokud použijete tuto možnost, tuto možnost nepoužívejte-r|--runtime. K dispozici od .NET 6. -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>-r|--runtime <RUNTIME_IDENTIFIER>Určuje cílový modul runtime. Seznam identifikátorů runtime (RID) najdete v katalogu RID. Pokud tuto možnost použijete se sadou .NET 6 SDK, použijte
--self-containednebo--no-self-containedtaké. Pokud není zadáno, výchozí hodnota je sestavení pro aktuální operační systém a architekturu.-
--sc|--self-containedPublikujte modul runtime .NET s vaší aplikací, aby se modul runtime nemusel instalovat na cílový počítač. Výchozí hodnota je
true. --source <SOURCE>Identifikátor URI zdroje balíčku NuGet, který se má použít během operace obnovení.
-
--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]. Další informace najdete v tématu LoggerVerbosity. --version-suffix <VERSION_SUFFIX>Nastaví hodnotu
$(VersionSuffix)vlastnosti, která se má použít při sestavování projektu. To funguje jenom v případě$(Version), že vlastnost není nastavená.$(Version)Potom se nastaví na$(VersionPrefix)kombinaci s$(VersionSuffix)čárkou oddělenou pomlčkou.-
-?|-h|--helpVytiskne popis použití příkazu.
Příklady
Sestavení projektu a jeho závislostí:
dotnet buildVytvoření souborové aplikace:
dotnet build MyProject.csPodpora souborových aplikací byla přidána do sady .NET SDK 10.0.100.
Pomocí konfigurace vydané verze vytvořte projekt a jeho závislosti:
dotnet build --configuration ReleaseSestavte projekt a jeho závislosti pro konkrétní modul runtime (v tomto příkladu Linux):
dotnet build --runtime linux-x64Sestavte projekt a během operace obnovení použijte zadaný zdroj balíčku NuGet:
dotnet build --source c:\packages\mypackagesSestavte projekt a nastavte verzi 1.2.3.4 jako parametr sestavení pomocí
-pmožnosti MSBuild:dotnet build -p:Version=1.2.3.4