dotnet build
Tento článek se vztahuje na: ✔️ .NET Core 3.1 SDK a novější verze
Název
dotnet build
– Vytvoří projekt a všechny jeho závislosti.
Synopse
dotnet build [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [-f|--framework <FRAMEWORK>]
[--disable-build-servers]
[--force] [--interactive] [--no-dependencies] [--no-incremental]
[--no-restore] [--nologo] [--no-self-contained] [--os <OS>]
[-o|--output <OUTPUT_DIRECTORY>]
[-p|--property:<PROPERTYNAME>=<VALUE>]
[-r|--runtime <RUNTIME_IDENTIFIER>]
[--self-contained [true|false]] [--source <SOURCE>]
[--tl:[auto|on|off]] [--use-current-runtime, --ucr [true|false]]
[-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
dotnet build -h|--help
Popis
Příkaz dotnet build
sestaví projekt a jeho 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, pokud je typ projektu spustitelný soubor určený pro .NET Core 3.0 nebo novější.
- 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 verze starší než .NET Core 3.0, se závislosti knihoven z NuGet obvykle nekopírují do výstupní složky. Řeší se ze složky globálních balíčků NuGet za běhu. S ohledem na to není produkt dotnet build
připravený k převodu na jiný počítač, který se má spustit. Pokud chcete vytvořit verzi aplikace, kterou je možné nasadit, musíte ji publikovat (například pomocí příkazu dotnet publish ). Další informace naleznete v tématu Nasazení aplikace .NET.
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 test
dotnet publish
a 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, takže 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 run
argumentů, 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
Soubor projektu nebo řešení, který se má sestavit. Pokud není zadaný soubor projektu nebo řešení, nástroj MSBuild vyhledá v aktuálním pracovním adresáři soubor, který má příponu souboru končící na proj nebo sln a použije tento soubor.
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í 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.
-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-servers
Vynutí 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
.--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 příkazu zastavit a čekat na uživatelský vstup nebo akci. Například k dokončení ověřování. K dispozici od sady .NET Core 3.0 SDK.
--no-dependencies
Ignoruje odkazy typu projekt-projekt (P2P) a sestaví pouze zadaný kořenový projekt.
--no-incremental
Označí 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-restore
Během sestavování nespustí implicitní obnovení.
--nologo
Nezobrazuje úvodní banner ani zprávu o autorských právech.
--no-self-contained
Publikuje aplikaci jako aplikaci závislou na rozhraní. Aby bylo možné aplikaci spustit, musí být na cílovém počítači nainstalovaný kompatibilní modul runtime .NET. K dispozici od sady .NET 6 SDK.
-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ímTargetFrameworks
vlastnosti) 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
--output
mož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--output
je 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-x64
počítači se zadáním--os linux
identifiká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-contained
nebo--no-self-contained
také. Pokud není zadáno, výchozí hodnota je sestavení pro aktuální operační systém a architekturu.--self-contained [true|false]
Publikuje modul runtime .NET s aplikací, aby se modul runtime nemusel instalovat na cílový počítač. Výchozí hodnota je
true
, pokud je zadán identifikátor modulu runtime. K dispozici od .NET 6.--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á protokolovací nástroj terminálu použít pro výstup sestavení. 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.on
přeskočí kontrolu prostředí a povolí protokolování terminálu.off
přeskočí kontrolu prostředí a použije výchozí protokolovací nástroj konzoly.Protokolovací nástroj terminálu 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.
-v|--verbosity <LEVEL>
Nastaví úroveň podrobností příkazu. Povolené hodnoty jsou
q[uiet]
, ,n[ormal]
m[inimal]
,d[etailed]
adiag[nostic]
. Výchozí hodnota jeminimal
. Ve výchozím nastavení nástroj MSBuild zobrazuje upozornění a chyby na všech úrovních podrobností. Chcete-li vyloučit upozornění, použijte/property:WarningLevel=0
. Další informace naleznete v tématu LoggerVerbosity a WarningLevel.--use-current-runtime, --ucr [true|false]
RuntimeIdentifier
Nastaví na platformu přenosnouRuntimeIdentifier
na základě počítače. K tomu dochází implicitně s vlastnostmi, které vyžadujíRuntimeIdentifier
, napříkladSelfContained
,PublishAot
,PublishSelfContained
,PublishSingleFile
aPublishReadyToRun
. Pokud je vlastnost nastavena na false, implicitní rozlišení již nebude k dispozici.--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.
Příklady
Sestavení projektu a jeho závislostí:
dotnet build
Pomocí konfigurace vydané verze vytvořte projekt a jeho závislosti:
dotnet build --configuration Release
Sestavte projekt a jeho závislosti pro konkrétní modul runtime (v tomto příkladu Linux):
dotnet build --runtime linux-x64
Sestavte projekt a během operace obnovení použijte zadaný zdroj balíčku NuGet:
dotnet build --source c:\packages\mypackages
Sestavte projekt a nastavte verzi 1.2.3.4 jako parametr sestavení pomocí
-p
možnosti MSBuild:dotnet build -p:Version=1.2.3.4