次の方法で共有


dotnet build

この記事の対象: ✔️ .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 コマンドは、プロジェクト、ソリューション、またはファイル ベースのアプリとその依存関係をバイナリのセットにビルドします。 バイナリには、拡張子が *.dll* である中間言語 (IL) ファイルのプロジェクトのコードが含まれます。 プロジェクトの種類と設定に応じて、次などのファイルを含めることもできます。

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

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

暗黙的な復元

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

復元を必要とするすべてのコマンド (dotnet restoredotnet newdotnet builddotnet rundotnet testdotnet publish など) によって暗黙的に実行されるため、dotnet pack を実行する必要がなくなりました。 暗黙的な復元を無効にするには、--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 | 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.0net462

  • --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
    
  • -p MSBuild オプションを使用してプロジェクトをビルドし、バージョン 1.2.3.4 をビルド パラメーターとして設定します。

    dotnet build -p:Version=1.2.3.4