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>]
    [-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 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, 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 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

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í na win-x86. Pokud použijete tuto možnost, tuto možnost nepoužívejte -r|--runtime . K dispozici od verze .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.

  • --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ím TargetFrameworks 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í na linux-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]a diag[nostic]. Výchozí hodnota je minimal. 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řenosnou RuntimeIdentifier na základě počítače. K tomu dochází implicitně s vlastnostmi, které vyžadují RuntimeIdentifier, například SelfContained, PublishAot, PublishSelfContained, PublishSingleFilea PublishReadyToRun. 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í -pmožnosti MSBuild:

    dotnet build -p:Version=1.2.3.4