Sdílet prostřednictvím


dotnet build

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í.

  • PROJECT je 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.

  • SOLUTION je cesta a název souboru řešení (.sln nebo přípony .slnx) nebo cesta k adresáři, který obsahuje soubor řešení.

  • FILE je 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-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.

  • --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 je msbuild.binlog v 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-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 .

  • --interactive

    Umožňuje příkazu zastavit a čekat na uživatelský vstup nebo akci. Například k dokončení ověřování.

  • --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

    Ekvivalent --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í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.

  • --sc|--self-contained

    Publikujte 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. 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.

    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-runtime

    Použ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]a diag[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|--help

    Vytiskne popis použití příkazu.

Příklady

  • Sestavení projektu a jeho závislostí:

    dotnet build
    
  • Vytvoření souborové aplikace:

    dotnet build MyProject.cs
    

    Podpora 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 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