この記事の対象: ✔️ .NET 6 SDK 以降のバージョン
名前
dotnet build - プロジェクト、ソリューション、またはファイル ベースのアプリとそのすべての依存関係をビルドします。
構文
dotnet build [<PROJECT>|<SOLUTION>|<FILE>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>]
[-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
説明
dotnet build コマンドは、プロジェクト、ソリューション、またはファイル ベースのアプリとその依存関係をバイナリのセットにビルドします。 バイナリには、拡張子が
- アプリケーションの実行に使用できる実行可能ファイル。
- 拡張子が
* .pdb* であるデバッグに使用されるシンボル ファイル。 - アプリケーションまたはライブラリの依存関係が列挙されている
* .deps.json* ファイル。 - アプリケーションの共有ランタイムとそのバージョンを指定する、
* .runtimeconfig.json* ファイル。 - (プロジェクト参照または NuGet パッケージの参照を介して) プロジェクトが依存する他のライブラリ。
.NET Core 3.0 以降を対象とする実行可能なプロジェクトでは、ライブラリの依存関係は出力フォルダーにコピーされます。 つまり、(Web プロジェクトなどが持つ) 発行専用のロジックが他にない場合、ビルドの出力は展開できるはずです。
暗黙的な復元
ビルドには dotnet restore を実行すると作成されます。 アセット ファイルが配置されていないと、ツールは参照アセンブリを解決できないため、エラーになります。
復元を必要とするすべてのコマンド (dotnet restore、dotnet new、dotnet build、dotnet run、dotnet test、dotnet publish など) によって暗黙的に実行されるため、dotnet pack を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--no-restore オプションを使用します。
dotnet restoreなどの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore は引き続き有用なコマンドです。
NuGet フィードの管理方法については、dotnet restore のドキュメントをご覧ください。
このコマンドには dotnet restore オプションを指定できますが、--source のように長い形式で指定する必要があります。
-s のような短い形式のオプションはサポートされていません。
実行可能ファイルまたはライブラリ出力
プロジェクトを実行できるかどうかは、プロジェクト ファイルの
<PropertyGroup>
<OutputType>Exe</OutputType>
</PropertyGroup>
ライブラリを生成するには、
MSBuild
dotnet build では、MSBuild を使用して、プロジェクト、ソリューション、またはファイル ベースのアプリをビルドします。 並列ビルドと増分ビルドの両方がサポートされています。 詳しくは、「
このオプションに加え、
注意
ワークロード マニフェストのダウンロード
このコマンドを実行すると、ワークロードの広告マニフェストの非同期バックグラウンド ダウンロードが開始されます。 このコマンドが終了してもダウンロードが実行されている場合、ダウンロードは停止します。 詳細については、「広告マニフェスト」を参照してください。
引数
PROJECT | SOLUTION | FILE
操作するプロジェクトまたはソリューション、または C# (ファイル ベースのアプリ) ファイル。 ファイルが指定されていない場合、MSBuild は現在のディレクトリでプロジェクトまたはソリューションを検索します。
PROJECTは、C#、F#、または Visual Basic プロジェクト ファイルのパスとファイル名、または C#、F#、または Visual Basic プロジェクト ファイルを含むディレクトリへのパスです。SOLUTIONは、ソリューション ファイルのパスとファイル名 (.slnx 拡張子.sln または)、またはソリューション ファイルを含むディレクトリへのパスです。FILEは.NET 10 で追加された引数です。 ファイル ベースのアプリのパスとファイル名。 ファイル ベースのアプリは、対応するプロジェクト (.csproj) ファイルなしでビルドおよび実行される 1 つのファイル内に含まれています。 詳細については、「 ファイル ベースの C# アプリをビルドする」を参照してください。
オプション
-a|--arch <ARCHITECTURE>ターゲット アーキテクチャを指定します。 これは、ランタイム識別子 (RID) を設定する簡単な構文です。指定した値は、既定の RID と組み合わされます。 たとえば、
win-x64マシンで--arch x86と指定すると、RID はwin-x86に設定されます。 このオプションを使用する場合は、-r|--runtimeオプションは使用しないでください。 .NET 6 Preview 7 以降で利用できます。
--artifacts-path <ARTIFACTS_DIR>実行されたコマンドからのすべてのビルド出力ファイルは、指定されたパスの下のサブフォルダーに配置され、プロジェクトで区切られます。 詳細については、「 Artifacts 出力レイアウトを参照してください。 .NET 8 SDK 以降で利用可能です。
-c|--configuration <CONFIGURATION>ビルド構成を定義します。 ほとんどのプロジェクトの既定値は
Debugですが、プロジェクトでビルド構成設定をオーバーライドできます。
--disable-build-servers永続的なビルド サーバーを強制的に無視してコマンドを実行します。 このオプションは、一貫してビルド キャッシュの使用をすべて無効にし、ゼロからのビルドを強制する手段として使用できます。 キャッシュに依存しないビルドを実行することは、キャッシュが何らかの理由で破損したか不正確な内容になった可能性がある場合に役立ちます。 .NET 7 SDK 以降で使用できます。
-f|--framework <FRAMEWORK>特定のフレームワーク用にコンパイルします。 フレームワークは、
[ プロジェクト ファイル](../project-sdk/overview.md) で定義する必要があります。 例:net7.0、net462。--force最後の復元が成功した場合でも、すべての依存関係が強制的に解決されます。 このフラグを指定することは、project.assets.json ファイルを削除することと同じです。
--interactiveコマンドを停止して、ユーザーの入力または操作のために待機させることができます。 たとえば、認証を完了する場合があります。 .NET Core 3.0 SDK 以降で使用できます。
--no-dependenciesプロジェクト間 (P2P) 参照を無視し、指定されたルート プロジェクトのみをビルドします。
--no-incrementalインクリメンタル ビルドとして安全でないビルドをマークします。 このフラグにより、インクリメンタル コンパイルは無効になり、プロジェクトの依存関係グラフのクリーン再ビルドが強制的に行われます。
--no-restoreビルド時に暗黙的な復元は実行されません。
--nologo著作権情報を表示しません。
--no-self-contained--self-contained falseに相当します。
-o|--output <OUTPUT_DIRECTORY>ビルド済みバイナリを配置するディレクトリ。 指定しない場合、既定のパスは
./bin/<configuration>/<framework>/になります。 (TargetFrameworksプロパティを使用した) ターゲット フレームワークが複数あるプロジェクトの場合は、このオプションを指定するときに--frameworkも定義する必要があります。.NET 7.0.200 SDK 以降
ソリューションでこのコマンドを実行するときに
--outputオプションを指定すると、出力パスの不明なセマンティクスが原因で、CLI から警告 (7.0.200 のエラー) が出力されます。 このオプションは、ビルドされたすべてのプロジェクトのすべての出力が指定されたディレクトリにコピーされるため、この--outputオプションは許可されません。これは、複数のターゲットを持つプロジェクトと、直接および推移的依存関係の異なるバージョンを持つプロジェクトと互換性がありません。 詳しくは、「ソリューション レベルの--outputオプションがビルド関連コマンドで無効に」を参照してください。
--os <OS>ターゲット オペレーティング システム (OS) を指定します。 これは、ランタイム識別子 (RID) を設定する簡単な構文です。指定した値は、既定の RID と組み合わされます。 たとえば、
win-x64マシンで--os linuxと指定すると、RID はlinux-x64に設定されます。 このオプションを使用する場合は、-r|--runtimeオプションは使用しないでください。 .NET 6 以降で使用可能です。
-p|--property:<PROPERTYNAME>=<VALUE>1 つ以上の MSBuild プロパティを設定します。 複数のプロパティを指定するには、セミコロンで区切るか、オプションを繰り返します。
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>-r|--runtime <RUNTIME_IDENTIFIER>ターゲットのランタイムを指定します。 ランタイム ID (RID) の一覧については、RID カタログに関するページをご覧ください。 .NET 6 SDK でこのオプションを使用する場合は、
--self-containedまたは--no-self-containedも同時に使用してください。 指定しない場合、既定では現在の OS とアーキテクチャ用にビルドされます。
--sc|--self-containedターゲット コンピューターにランタイムをインストールする必要がないように、アプリケーションで .NET ランタイムを発行します。 既定値は、
trueです。
--source <SOURCE>復元操作時に使用する NuGet パッケージ ソースの URI。
--tl:[auto|on|off]ビルド出力に ターミナル ロガー を使用するかどうかを指定します。 既定値は、ターミナル ログを有効にする前にまず環境を確認する、
autoです。 環境チェックでは、ターミナルが最新の出力機能を使用でき、新しいロガーを有効にする前にリダイレクトされる標準出力を使用していないことを確認します。onは、環境チェックをスキップし、ターミナル ログを有効にします。offは、環境チェックをスキップし、既定のコンソール ロガーを使用します。ターミナル ロガーには、復元フェーズとビルド フェーズが表示されます。 各フェーズにおいて、現在ビルド中のプロジェクトがターミナルの下部に表示されます。 ビルド中の各プロジェクトに対し、現在ビルド中の MSBuild ターゲットとそのターゲットに費やされた時間の両方が出力されます。 ビルドの詳細は、この情報を検索して確認できます。 プロジェクトのビルドが完了すると、次がキャプチャされた 1 つの "ビルドが完了しました" セクションが書き込まれます。
- ビルドされたプロジェクトの名前。
- ターゲット フレームワーク (複数ターゲットの場合)。
- そのビルドの状態。
- そのビルドの主な出力 (ハイパーリンク付き)。
- そのプロジェクトに対して生成された診断。
このオプションは、.NET 8 以降で使用できます。
--ucr|--use-current-runtime現在のランタイムをターゲット ランタイムとして使用します。
-v|--verbosity <LEVEL>コマンドの詳細レベルを設定します。 指定できる値は、
q[uiet]、m[inimal]、n[ormal]、d[etailed]、およびdiag[nostic]です。 詳細については、LoggerVerbosityを参照してください。
--version-suffix <VERSION_SUFFIX>プロジェクトをビルドするときに使用する
`$(VersionSuffix)` プロパティの値を設定します。 これは、`$(Version)` プロパティが設定されていない場合にのみ機能します。 次に、`$(Version)` には、ダッシュで区切り`$(VersionSuffix)` と組み合わせた`$(VersionPrefix)` が設定されます。
-?|-h|--helpコマンドの使用方法を示した説明を出力します。
使用例
プロジェクトとその依存関係をビルドします。
dotnet buildファイル ベースのアプリをビルドします。
dotnet build MyProject.cs.NET SDK 10.0.100 でファイル ベースのアプリのサポートが追加されました。
リリース構成を使用して、プロジェクトとその依存関係をビルドします。
dotnet build --configuration Release特定のランタイム (この例では Linux) のプロジェクトとその依存関係をビルドします。
dotnet build --runtime linux-x64プロジェクトをビルドし、復元操作中に指定した NuGet パッケージ ソースを使用します。
dotnet build --source c:\packages\mypackages-pMSBuild オプションを使用してプロジェクトをビルドし、バージョン 1.2.3.4 をビルド パラメーターとして設定します。dotnet build -p:Version=1.2.3.4
.NET