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
コマンドは、プロジェクトとその依存関係をバイナリ セットにビルドします。 バイナリには、拡張子が
- プロジェクトの種類が .NET Core 3.0 以降を対象とする実行可能ファイルである場合、アプリケーションの実行に使用できる実行可能ファイル。
- 拡張子が
* .pdb* であるデバッグに使用されるシンボル ファイル。 - アプリケーションまたはライブラリの依存関係が列挙されている
* .deps.json* ファイル。 - アプリケーションの共有ランタイムとそのバージョンを指定する、
* .runtimeconfig.json* ファイル。 - (プロジェクト参照または NuGet パッケージの参照を介して) プロジェクトが依存する他のライブラリ。
.NET Core 3.0 より前のバージョンを対象とする実行可能なプロジェクトでは、NuGet からのライブラリの依存関係は、通常出力フォルダーにコピーされません。 これらは、実行時に NuGet グローバル パッケージ フォルダーで解決されます。 この点を考慮すると、
.NET Core 3.0 以降を対象とする実行可能なプロジェクトでは、ライブラリの依存関係は出力フォルダーにコピーされます。 つまり、(Web プロジェクトなどが持つ) 発行専用のロジックが他にない場合、ビルドの出力は展開できるはずです。
暗黙的な復元
ビルドには dotnet restore
を実行すると作成されます。 アセット ファイルが配置されていないと、ツールは参照アセンブリを解決できないため、エラーになります。
復元を必要とするすべてのコマンド (dotnet new
、dotnet build
、dotnet run
、dotnet test
、dotnet publish
、dotnet pack
など) によって暗黙的に実行されるため、dotnet restore
を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--no-restore
オプションを使用します。
dotnet restore
などの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore
は引き続き有用なコマンドです。
NuGet フィードの管理方法については、dotnet restore
のドキュメントをご覧ください。
このコマンドには dotnet restore
オプションを指定できますが、--source
のように長い形式で指定する必要があります。 -s
のような短い形式のオプションはサポートされていません。
実行可能ファイルまたはライブラリ出力
プロジェクトを実行できるかどうかは、プロジェクト ファイルの
<PropertyGroup>
<OutputType>Exe</OutputType>
</PropertyGroup>
ライブラリを生成するには、
MSBuild
このオプションに加え、
注意
ワークロード マニフェストのダウンロード
このコマンドを実行すると、ワークロードの広告マニフェストの非同期バックグラウンド ダウンロードが開始されます。 このコマンドが終了してもダウンロードが実行されている場合、ダウンロードは停止します。 詳細については、「広告マニフェスト」を参照してください。
引数
PROJECT | SOLUTION
ビルドするプロジェクトまたはソリューションのファイル。 プロジェクトまたはソリューションのファイルを指定しない場合、MSBuild は、現在の作業ディレクトリから
オプション
-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.0
、net462
。--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
を使います。 詳細については、LoggerVerbosity と WarningLevel に関する記事を参照してください。
--use-current-runtime, --ucr [true|false]
RuntimeIdentifier
をいずれかのマシンに基づいてプラットフォームの移植可能なRuntimeIdentifier
に設定します。 これは、SelfContained
、PublishAot
、PublishSelfContained
、PublishSingleFile
、PublishReadyToRun
などの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
-p
MSBuild オプションを使用してプロジェクトをビルドし、バージョン 1.2.3.4 をビルド パラメーターとして設定します。dotnet build -p:Version=1.2.3.4