dotnet build

この記事の対象: ✔️ .NET Core 3.1 SDK 以降のバージョン

名前

dotnet build - プロジェクトとそのすべての依存関係をビルドします。

構文

dotnet build [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
    [-c|--configuration <CONFIGURATION>] [-f|--framework <FRAMEWORK>]
    [--force] [--interactive] [--no-dependencies] [--no-incremental]
    [--no-restore] [--nologo] [--no-self-contained] [--os <OS>]
    [-o|--output <OUTPUT_DIRECTORY>] [-r|--runtime <RUNTIME_IDENTIFIER>]
    [--self-contained [true|false]] [--source <SOURCE>] [--use-current-runtime, --ucr [true|false]]
    [-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]

dotnet build -h|--help

説明

dotnet build コマンドは、プロジェクトとその依存関係をバイナリ セットにビルドします。 バイナリには、拡張子が *.dll* である中間言語 (IL) ファイルのプロジェクトのコードが含まれます。 プロジェクトの種類と設定に応じて、次などのファイルを含めることもできます。

  • プロジェクトの種類が .NET Core 3.0 以降を対象とする実行可能ファイルである場合、アプリケーションの実行に使用できる実行可能ファイル。
  • 拡張子が *.pdb* であるデバッグに使用されるシンボル ファイル。
  • アプリケーションまたはライブラリの依存関係が列挙されている *.deps.json* ファイル。
  • アプリケーションの共有ランタイムとそのバージョンを指定する、 *.runtimeconfig.json* ファイル。
  • (プロジェクト参照または NuGet パッケージの参照を介して) プロジェクトが依存する他のライブラリ。

.NET Core 3.0 より前のバージョンを対象とする実行可能なプロジェクトでは、NuGet からのライブラリの依存関係は、通常出力フォルダーにコピーされません。 これらは、実行時に NuGet グローバル パッケージ フォルダーで解決されます。 この点を考慮すると、`dotnet build` の生成物は別のコンピューターに転送して実行することはできません。 展開できるアプリケーションのバージョンを作成するには、(たとえば、[dotnet publish](dotnet-publish.md) コマンドを使用して) アプリケーションを発行する必要があります。 詳細については、[.NET アプリケーションの展開](../deploying/index.md)に関する記事を参照してください。

.NET Core 3.0 以降を対象とする実行可能なプロジェクトでは、ライブラリの依存関係は出力フォルダーにコピーされます。 つまり、(Web プロジェクトなどが持つ) 発行専用のロジックが他にない場合、ビルドの出力は展開できるはずです。

暗黙的な復元

ビルドには *project.assets.json* ファイルが必要です。このファイルには、アプリケーションの依存関係が一覧表示されています。 このファイルは、dotnet restore を実行すると作成されます。 アセット ファイルが配置されていないと、ツールは参照アセンブリを解決できないため、エラーになります。

復元を必要とするすべてのコマンド (dotnet newdotnet builddotnet rundotnet testdotnet publishdotnet pack など) によって暗黙的に実行されるため、dotnet restore を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--no-restore オプションを使用します。

dotnet restoreなどの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore は引き続き有用なコマンドです。

NuGet フィードの管理方法については、dotnet restore のドキュメントをご覧ください。

このコマンドには dotnet restore オプションを指定できますが、--source のように長い形式で指定する必要があります。 -s のような短い形式のオプションはサポートされていません。

実行可能ファイルまたはライブラリ出力

プロジェクトを実行できるかどうかは、プロジェクト ファイルの `` プロパティで決まります。 次の例は、実行可能なコードを生成するプロジェクトを示しています。

<PropertyGroup>
  <OutputType>Exe</OutputType>
</PropertyGroup>

ライブラリを生成するには、`` プロパティを省略するか、その値を `Library` に変更します。 ライブラリの IL DLL にはエントリ ポイントが含まれず、実行できません。

MSBuild

`dotnet build` では MSBuild を使用してプロジェクトをビルドするため、並列ビルドとインクリメンタル ビルドの両方がサポートされます。 詳しくは、「[インクリメンタル ビルド](/visualstudio/msbuild/incremental-builds)」を参照してください。

このオプションに加え、`dotnet build` コマンドは、プロパティを設定する `-p` やロガーを定義する `-l` などの MSBuild オプションも受け入れます。 これらのオプションの詳細については、「[MSBuild コマンド ライン リファレンス](/visualstudio/msbuild/msbuild-command-line-reference)」を参照してください。 また、[dotnet msbuild](dotnet-msbuild.md) コマンドを使用することもできます。

注意

`dotnet build``dotnet run` によって自動的に実行される場合、`-property:property=value` のような引数は考慮されません。

`dotnet build` を実行することは、`dotnet msbuild -restore` を実行することと同じです。ただし、出力の既定の詳細度は異なります。

ワークロード マニフェストのダウンロード

このコマンドを実行すると、ワークロードの広告マニフェストの非同期バックグラウンド ダウンロードが開始されます。 このコマンドが終了してもダウンロードが実行されている場合、ダウンロードは停止します。 詳細については、「広告マニフェスト」を参照してください。

引数

PROJECT | SOLUTION

ビルドするプロジェクトまたはソリューションのファイル。 プロジェクトまたはソリューションのファイルを指定しない場合、MSBuild は、現在の作業ディレクトリから *proj* または *sln* のどちらかで終わるファイル拡張子を持つファイルを検索して、そのファイルを使います。

オプション

  • -a|--arch <ARCHITECTURE>

    ターゲット アーキテクチャを指定します。 これは、ランタイム識別子 (RID) を設定する簡単な構文です。指定した値は、既定の RID と組み合わされます。 たとえば、win-x64 マシンで --arch x86 と指定すると、RID は win-x86 に設定されます。 このオプションを使用する場合は、-r|--runtime オプションは使用しないでください。 .NET 6 Preview 7 以降で利用できます。

  • -c|--configuration <CONFIGURATION>

    ビルド構成を定義します。 ほとんどのプロジェクトの既定値は Debug ですが、プロジェクトでビルド構成設定をオーバーライドできます。

  • -f|--framework <FRAMEWORK>

    特定のフレームワーク用にコンパイルします。 フレームワークは、[プロジェクト ファイル](../project-sdk/overview.md)で定義する必要があります。 例: net7.0net462

  • --force

    最後の復元が成功した場合でも、すべての依存関係が強制的に解決されます。 このフラグを指定することは、project.assets.json ファイルを削除することと同じです。

  • -?|-h|--help

    コマンドの使用方法を示した説明を出力します。

  • --interactive

    コマンドを停止して、ユーザーの入力または操作のために待機させることができます。 たとえば、認証を完了する場合があります。 .NET Core 3.0 SDK 以降で使用できます。

  • --no-dependencies

    プロジェクト間 (P2P) 参照を無視し、指定されたルート プロジェクトのみをビルドします。

  • --no-incremental

    インクリメンタル ビルドとして安全でないビルドをマークします。 このフラグにより、インクリメンタル コンパイルは無効になり、プロジェクトの依存関係グラフのクリーン再ビルドが強制的に行われます。

  • --no-restore

    ビルド時に暗黙的な復元は実行されません。

  • --nologo

    著作権情報を表示しません。

  • --no-self-contained

    フレームワーク依存のアプリケーションとしてアプリケーションを発行します。 アプリケーションを実行するには、互換性のある .NET ランタイムをターゲット マシンにインストールする必要があります。 .NET 6 SDK 以降で利用可能です。

  • -o|--output <OUTPUT_DIRECTORY>

    ビルド済みバイナリを配置するディレクトリ。 指定しない場合、既定のパスは ./bin/<configuration>/<framework>/ になります。 (TargetFrameworks プロパティを使用した) ターゲット フレームワークが複数あるプロジェクトの場合は、このオプションを指定するときに --framework も定義する必要があります。

  • --os <OS>

    ターゲット オペレーティング システム (OS) を指定します。 これは、ランタイム識別子 (RID) を設定する簡単な構文です。指定した値は、既定の RID と組み合わされます。 たとえば、win-x64 マシンで --os linux と指定すると、RID は linux-x64 に設定されます。 このオプションを使用する場合は、-r|--runtime オプションは使用しないでください。 .NET 6 以降で使用可能です。

  • -r|--runtime <RUNTIME_IDENTIFIER>

    ターゲットのランタイムを指定します。 ランタイム ID (RID) の一覧については、RID カタログに関するページをご覧ください。 .NET 6 SDK でこのオプションを使用する場合は、--self-contained または --no-self-contained も同時に使用してください。 指定しない場合、既定では現在の OS とアーキテクチャ用にビルドされます。

  • --self-contained [true|false]

    アプリケーションと併せて .NET ランタイムを発行します。これにより、ランタイムをターゲット コンピューターにインストールする必要がなくなります。 ランタイム識別子が指定されている場合、既定値は true です。 .NET 6 SDK 以降で利用可能です。

  • --source <SOURCE>

    復元操作時に使用する NuGet パッケージ ソースの URI。

-v|--verbosity <LEVEL>

コマンドの詳細レベルを設定します。 指定できる値は、q[uiet]m[inimal]n[ormal]d[etailed]、および diag[nostic] です。 既定値は、minimal です。 既定では、MSBuild ではすべての詳細レベルで警告とエラーが表示されます。 警告を除外するには、/property:WarningLevel=0 を使います。 詳細については、LoggerVerbosityWarningLevel に関する記事を参照してください。

  • --use-current-runtime, --ucr [true|false]

    RuntimeIdentifier をいずれかのマシンに基づいてプラットフォームの移植可能な RuntimeIdentifier に設定します。 これは、SelfContainedPublishAotPublishSelfContainedPublishSingleFilePublishReadyToRun などの RuntimeIdentifier を必要とするプロパティにより暗黙的に発生します。 プロパティが false に設定されていると、その暗黙の解決は発生しなくなります。

  • --version-suffix <VERSION_SUFFIX>

    プロジェクトをビルドするときに使用する `$(VersionSuffix)` プロパティの値を設定します。 これは、`$(Version)` プロパティが設定されていない場合にのみ機能します。 次に、`$(Version)` には、ダッシュで区切り `$(VersionSuffix)` と組み合わせた `$(VersionPrefix)` が設定されます。

使用例

  • プロジェクトとその依存関係をビルドします。

    dotnet build
    
  • リリース構成を使用して、プロジェクトとその依存関係をビルドします。

    dotnet build --configuration Release
    
  • 特定のランタイム (この例では、Ubuntu 18.04) 用にプロジェクトとその依存関係をビルドします。

    dotnet build --runtime ubuntu.18.04-x64
    
  • プロジェクトをビルドし、復元操作中に指定した NuGet パッケージ ソースを使用します。

    dotnet build --source c:\packages\mypackages
    
  • -pMSBuild オプションを使用してプロジェクトをビルドし、バージョン 1.2.3.4 をビルド パラメーターとして設定します。

    dotnet build -p:Version=1.2.3.4