次の方法で共有


MSBuild コマンド ライン リファレンス

MSBuild.exe を使用してプロジェクトまたはソリューション ファイルをビルドする場合は、複数のスイッチを含め、プロセスのさまざまな側面を指定できます。

すべてのスイッチは、-switch/switchの 2 つの形式で利用できます。 ドキュメントには、-switch フォームのみが表示されます。 スイッチでは大文字と小文字は区別されません。 Windows コマンド プロンプト以外のシェルから MSBuild を実行する場合、スイッチの引数のリスト (セミコロンまたはコンマで区切る) では、シェルによって解釈されるのではなく、リストが MSBuild に確実に渡されるように、単一引用符または二重引用符が必要になる場合があります。

.NET CLI コマンド dotnet ビルド、dotnet publish dotnet msbuild、および関連コマンドこれらのスイッチを MSBuild に渡すので、これらのコマンドを使用する場合は、このリファレンスが適用されます。ただし、dotnet run はありません。

構文

MSBuild.exe [Switches] [ProjectFile]

引数

引数 形容
ProjectFile 指定したプロジェクト ファイル内のターゲットをビルドします。 プロジェクト ファイルを指定しない場合、MSBuild は現在の作業ディレクトリで、proj で終わるファイル名拡張子 検索し、そのファイルを使用します。 この引数に Visual Studio ソリューション ファイルを指定することもできます。

スイッチ

次の表の最初の列は、各スイッチの長短の形式を示しています。 どちらの形式も同等です。

角かっこ [] 省略可能な部分を示し、中かっこ {}ユーザーが指定した値を示します。

スイッチ 形容
-detailedSummary[:{True or False}]

-ds[:{True or False}]
True場合は、ビルドされた構成とそのノードへのスケジュール方法に関する詳細情報をビルド ログの末尾に表示します。
-getItem:{itemName,...} ビルドを実行せずに、評価後に項目または項目の値を書き出すか、-targets オプションまたは -getTargetResult オプションを使用する場合は、ビルド後に値を書き出します。
-getProperty:{propertyName,...} ビルドを実行せずに、評価後にプロパティまたはプロパティの値を書き出すか、-targets オプションまたは -getTargetResult オプションを使用する場合は、ビルド後に値を書き出します。
-getTargetResult:{targetName,...} 指定したターゲットの出力値を書き出します。
-graphBuild[:{True or False}]

-graph[:{True or False}]
MSBuild でプロジェクト グラフを構築し、ビルドします。 グラフを作成するには、フォームの依存関係に対するプロジェクト参照を識別する必要があります。 そのグラフのビルドでは、従来の MSBuild スケジュールとは異なり、参照するプロジェクトの前にプロジェクト参照をビルドしようとします。 MSBuild 16 以降が必要です。
-help

/? または -h
使用状況情報を表示します。 次のコマンドは例です。

msbuild.exe -?
-ignoreProjectExtensions: {extensions}

-ignore: {extensions}
ビルドするプロジェクト ファイルを決定するときは、指定した拡張子を無視します。 次の例に示すように、複数の拡張機能を区切るにはセミコロンまたはコンマを使用します。

-ignoreprojectextensions:.vcproj,.sln
-inputResultsCaches[:{cacheFile; ...}]

-irc[:{cacheFile; ...}]
MSBuild がビルド結果を読み取る入力キャッシュ ファイルのセミコロン区切りの一覧。 -isolateProjectsFalseに設定すると、Trueに設定されます。
-interactive[:{True or False}] ビルド内のアクションがユーザーとの対話を許可されていることを示します。 対話機能が期待されない自動化されたシナリオでは、この引数を使用しないでください。 -interactive の指定は、-interactive:trueの指定と同じです。 パラメーターを使用して、応答ファイルから取得された値をオーバーライドします。
-isolateProjects[:{True, MessageUponIsolationViolation, False}]

-isolate[:{True, MessageUponIsolationViolation, False}]
MSBuild で各プロジェクトを分離してビルドします。 MessageUponIsolationViolation (またはその短い形式の Message) に設定すると、-outputResultsCache スイッチが指定されている場合、最上位レベルのターゲットからの結果のみがシリアル化されます。 このオプションは、副作用が考慮されないキャッシュされたターゲットへの依存関係により、依存関係プロジェクトで不適切な状態を使用する分離違反ターゲットの可能性を軽減することです。 (たとえば、プロパティの定義など)。このモードは、評価時にプロジェクト グラフを静的に検出できるようにする必要があるため、より制限が厳しくなっていますが、多数のプロジェクトをビルドする際のスケジュール設定を改善し、メモリオーバーヘッドを削減できます。
-lowPriority[:{True or False}]

-low[:{True or False}]
MSBuild を低いプロセス優先度で実行します。 -lowPriority の指定は、-lowPriority:Trueの指定と同じです。
-maxCpuCount[:{number}]

-m[:{number}]
ビルド時に使用する同時実行プロセスの最大数を指定します。 このスイッチを含めない場合、既定値は 1 です。 値を指定せずにこのスイッチを含める場合、MSBuild はコンピューター内のプロセッサの数まで使用します。 詳細については、「複数のプロジェクトを並列でビルドする」を参照してください。

次の例では、3 つの MSBuild プロセスを使用してビルドするように MSBuild に指示します。これにより、3 つのプロジェクトを同時にビルドできます。

msbuild myproject.proj -maxcpucount:3
-noAutoResponse

-noautorsp
MSBuild.rsp または Directory.Build.rsp ファイル 自動的に含めないでください。
-nodeReuse:{value}

-nr:{value}
MSBuild ノードの再利用を有効または無効にします。 次の値を指定できます。

- Trueです。 ノードはビルドが完了した後も残り、後続のビルドで使用できます (既定)。
falseを - します。 ノードは、ビルドが完了した後も残りません。

ノードは、実行中のプロジェクトに対応します。 -maxcpucount スイッチを含める場合、複数のノードを同時に実行できます。
-nologo スタートアップ バナーや著作権メッセージは表示しないでください。
-preprocess[:{filepath}]

-pp[:{filepath}]
ビルド中にインポートされるすべてのファイルをインライン化し、境界をマークして、集約された 1 つのプロジェクト ファイルを作成します。 このスイッチを使用すると、インポートするファイル、ファイルのインポート元、ビルドに使用するファイルをより簡単に判断できます。 このスイッチを使用すると、プロジェクトはビルドされません。

filepathを指定すると、集計されたプロジェクト ファイルがファイルに出力されます。 それ以外の場合は、コンソール ウィンドウに出力が表示されます。

Import 要素を使用してプロジェクト ファイルを別のプロジェクト ファイルに挿入する方法については、「Import 要素 (MSBuild)」および 「方法:複数のプロジェクト ファイルで同じターゲットを使用する方法」を参照してください。
-outputResultsCache[:{cacheFile}]

-orc[:{cacheFile}]
MSBuild がビルドの最後にビルド結果キャッシュの内容を書き込む出力キャッシュ ファイル。 -isolateProjectsFalseに設定すると、Trueに設定されます。
profileEvaluation:{file} MSBuild の評価をプロファイルし、指定したファイルに結果を書き込みます。 指定したファイルの拡張子が '.md' の場合、結果は Markdown 形式で生成されます。 それ以外の場合は、タブ区切りのファイルが生成されます。
-property:{name}={value}

-p:{name}={value}
指定したプロジェクト レベルのプロパティを設定またはオーバーライドします。ここで、name はプロパティ名、value はプロパティ値です。 次の例に示すように、各プロパティを個別に指定するか、セミコロンまたはコンマを使用して複数のプロパティを区切ります。

-property:WarningLevel=2;OutDir=bin\Debug

一般的に使用 プロパティの一覧については、 一般的な MSBuild プロジェクトのプロパティを参照してください。 使用可能なプロパティの完全なセットは、プロジェクトの種類、SDK、インポートされたファイルによって異なります。
-restore

-r
実際のターゲットを構築する前に、Restore ターゲットを実行します。
-restoreProperty:{name}={value}

-rp:{name}={value}
これらのプロジェクト レベルのプロパティは、復元時にのみ設定またはオーバーライドされ、-property 引数で指定されたプロパティは使用しないでください。 name はプロパティ名で、value はプロパティ値です。 複数のプロパティを区切るには、セミコロンまたはコンマを使用するか、各プロパティを個別に指定します。
-target:{targets}

-t:{targets}
プロジェクト内の指定したターゲットをビルドします。 次の例に示すように、各ターゲットを個別に指定するか、セミコロンまたはコンマを使用して複数のターゲットを区切ります。

-target:PrepareResources;Compile

このスイッチを使用してターゲットを指定すると、プロジェクト ファイル内の DefaultTargets 属性内のターゲットの代わりに実行されます。 詳細については、「ターゲット のビルド順序の」と「方法: 最初にビルドするターゲットを指定するを参照してください。

ターゲットはタスクのグループです。 詳細については、「ターゲットの」を参照してください。
-targets[:{file}]

-ts[:{file}]
ビルド プロセスを実際に実行せずに、指定したファイル (またはファイルが指定されていない場合は出力デバイス) に使用可能なターゲットの一覧を書き込みます。
-toolsVersion:{version}

-tv:{version}
カスタム ツールセットを指定します。 ツールセットは、アプリケーションのビルドに使用されるタスク、ターゲット、およびツールで構成されます。 ツールセット (ToolsVersion)標準ツールセット構成とカスタム ツールセット構成を参照してください。
-validate:[{schema}]

-val[{schema}]
プロジェクト ファイルを検証し、検証が成功した場合はプロジェクトをビルドします。

schemaを指定しない場合、プロジェクトは既定のスキーマに対して検証されます。

schemaを指定すると、指定したスキーマに対してプロジェクトが検証されます。

次の設定は例です: -validate:MyExtendedBuildSchema.xsd
-verbosity:{level}

-v:{level}
ビルド ログに表示する情報の量を指定します。 各ロガーには、そのロガーに設定した詳細レベルに基づいてイベントが表示されます。

詳細レベルは、q[uiet]m[inimal]n[ormal] (既定)、d[etailed]、および diag[nostic]で指定できます。

次の設定は例です: -verbosity:quiet
-version

-ver
バージョン情報のみを表示します。 プロジェクトはビルドされていません。
@{file} テキスト ファイルからコマンド ライン スイッチを挿入します。 複数のファイルがある場合は、個別に指定します。 詳細については、「応答ファイルの」を参照してください。
-warnAsError[:{code; ...}]

-err[:{code; ...}]
エラーとして扱う警告コードの一覧。 複数の警告コードを区切るには、セミコロンまたはコンマを使用します。 すべての警告をエラーとして扱うには、値のないスイッチを使用します。 警告がエラーとして扱われると、ターゲットは警告であるかのように実行され続けますが、全体的なビルドは失敗します。

例: -err:MSB4130
-warnNotAsError[:{code; ...}]

-noerr[:{code; ...}]
MSBuild 17.0 以降。 エラーに昇格すべきではない警告コードの一覧。 具体的には、warnAsError スイッチがすべての警告をエラーに昇格するように設定されている場合、warnNotAsError で指定されたエラー コードは昇格されません。 warnAsError がすべての警告をエラーに昇格するように設定されていない場合、これは無効です。 複数の警告コードを区切るには、セミコロンまたはコンマを使用します。

例: -noerr:MSB4130
-warnAsMessage[:{code}; ...}]

-noWarn[:{code; ...}]
重要度の低いメッセージとして扱う警告コードの一覧。 複数の警告コードを区切るには、セミコロンまたはコンマを使用します。

例: -noWarn:MSB3026

ロガー用スイッチ

スイッチ 形容
-binaryLogger[:[LogFile=]{output.binlog}
[;ProjectImports=NoneEmbedZipFile]]

-bl[:[LogFile=]{output.binlog}
[;ProjectImports=NoneEmbedZipFile]]
すべてのビルド イベントを圧縮バイナリ ファイルにシリアル化します。 既定では、ファイルは現在のディレクトリにあり、msbuild.binlog 名前が付けられています。 バイナリ ログは、後でテキスト ログを再構築したり、他の分析ツールで使用したりするために使用できるビルド プロセスの詳細な説明です。 バイナリ ログは、通常、最も詳細なテキスト診断レベルのログよりも 10 ~ 20 倍小さくなりますが、より多くの情報が含まれています。

既定では、バイナリ ロガーは、ビルド中に検出されたすべてのインポート済みプロジェクトとターゲット ファイルを含む、プロジェクト ファイルのソース テキストを収集します。 省略可能な ProjectImports パラメーターは、この動作を制御します。

- ProjectImports=None. プロジェクトのインポートを収集しないでください。
- ProjectImports=Embed. プロジェクトのインポートをログ ファイルに埋め込みます (既定)。
- ProjectImports=ZipFile. プロジェクト ファイルを {output}.projectimports.zip 保存します。出力><バイナリ ログ ファイル名と同じ名前です。

ProjectImports の既定の設定は [埋め込み] です。
注意: ロガーは、.cs.cppなどの MSBuild 以外のソース ファイルを収集しません。
.binlog ファイルは、プロジェクト/ソリューションの代わりに引数として msbuild.exe に渡すことによって"再生" できます。 他のロガーは、元のビルドが発生したかのようにログ ファイルに含まれる情報を受け取ります。 バイナリ ログとその使用方法の詳細については、次の https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md を参照してください。

:
- -bl
- -bl:output.binlog
- -bl:output.binlog;ProjectImports=None
- -bl:output.binlog;ProjectImports=ZipFile
- -bl:..\..\custom.binlog
- -binaryLogger
-consoleLoggerParameters:{parameters}

-clp:{parameters}
指定したパラメーターをコンソール ロガーに渡します。コンソール ロガーには、コンソール ウィンドウにビルド情報が表示されます。 次のパラメーターを指定できます。

- PerformanceSummary. タスク、ターゲット、プロジェクトで費やされた時間を表示します。
- 概要。 最後にエラーと警告の概要を表示します。
noSummaryを - します。 最後にエラーと警告の概要を表示しないでください。
- ErrorsOnly. エラーのみを表示します。
- WarningsOnly. 警告のみを表示します。
noItemAndPropertyListを - します。 詳細レベルが diagnosticに設定されている場合、各プロジェクト ビルドの開始時に表示される項目とプロパティの一覧は表示されません。
ShowCommandLineを - します。 TaskCommandLineEvent メッセージを表示します。
ShowProjectFileを - します。 診断メッセージにプロジェクト ファイルへのパスを表示します。 この設定は既定でオンになっています。
ShowTimestampを - します。 タイムスタンプを任意のメッセージのプレフィックスとして表示します。
ShowEventIdを - します。 開始された各イベント、完了したイベント、およびメッセージのイベント ID を表示します。
- ForceNoAlign. テキストをコンソール バッファーのサイズに合わせないでください。
DisableConsoleColorを - します。 すべてのログ メッセージに既定のコンソールの色を使用します。
disableMPLoggingを - します。 マルチプロセッサ以外のモードで実行する場合は、出力のマルチプロセッサ ログ スタイルを無効にします。
EnableMPLoggingを - します。 マルチプロセッサ以外のモードで実行している場合でも、マルチプロセッサ ログ スタイルを有効にします。 このログ スタイルは既定でオンになっています。
ForceConsoleColorを - します。 コンソールでサポートされていない場合でも、ANSI コンソールの色を使用します。
- 詳細度. このロガーの -verbosity 設定をオーバーライドします。

次の例に示すように、セミコロンを使用して複数のパラメーターを区切ります。

-consoleLoggerParameters:PerformanceSummary;NoSummary -verbosity:minimal

既定のコンソール ロガーは通常の詳細度であり、Summaryが含まれています。
-distributedFileLogger

-dfl
各 MSBuild ノードのビルド出力を独自のファイルに記録します。 これらのファイルの最初の場所は現在のディレクトリです。 既定では、ファイルの名前は MSBuild{NodeId}.log です。 -fileLoggerParameters スイッチを使用して、fileLogger のファイルとその他のパラメーターの場所を指定できます。

-fileLoggerParameters スイッチを使用してログ ファイルに名前を付けると、分散ロガーはその名前をテンプレートとして使用し、ノードごとにログ ファイルを作成するときにその名前にノード ID を追加します。
-distributedLogger:{central logger},{forwarding logger}, ...

-dl:{central logger},{forwarding logger, ...}
MSBuild からイベントをログに記録し、異なるロガー インスタンスを各ノードにアタッチします。 複数のロガーを指定するには、各ロガーを個別に指定します。

ロガー構文を使用してロガーを指定します。ただし、転送ロガーのクラスと追加のクラスを指定する必要があります。 ロガーの構文については、-logger スイッチを参照してください。

次の例は、このスイッチの使用方法を示しています。

-dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll
-fileLogger[{number}]

-fl[{number}]
ビルド出力を現在のディレクトリ内の 1 つのファイルに記録します。 numberを指定しない場合、出力ファイルには msbuild.logという名前が付けられます。 numberを指定した場合、出力ファイルの名前は msbuild<n>.log 、<n> が numberされます。 Number は 1 から 9 までの数字にすることができます。

-fileLoggerParameters スイッチを使用して、fileLogger のファイルとその他のパラメーターの場所を指定できます。
-fileLoggerParameters[{number}]:

parameters

-flp[{number}]: {parameters}
ファイル ロガーと分散ファイル ロガーの追加パラメーターを指定します。 このスイッチが存在することは、対応する -filelogger[number] スイッチが存在することを意味します。 Number は 1 から 9 までの数字にすることができます。

-consoleloggerparametersに一覧表示されているすべてのパラメーターを使用できます。 次のパラメーターの 1 つ以上を使用することもできます。

LogFileを - します。 ビルド ログの書き込み先となるログ ファイルへのパス。 分散ファイル ロガーは、ログ ファイルの名前にこのパスのプレフィックスを付けます。
- 追加。 ビルド ログをログ ファイルに追加するか、上書きするかを決定します。 スイッチを設定すると、ビルド ログがログ ファイルに追加されます。 スイッチが存在しない場合、既存のログ ファイルの内容が上書きされます。
例: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append
明示的な true または false 設定を含める場合、設定に関係なくログが追加されます。 追加スイッチを含めない場合、ログは上書きされます。
この場合、ファイルは上書きされます: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log
この場合、ファイルが追加されます: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=true
この場合、ファイルが追加されます: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=false
エンコードを - します。 ファイルのエンコードを指定します (UTF-8、Unicode、ASCII など)。

次の例では、警告とエラーに対して個別のログ ファイルを生成します。

-flp1:logfile=errors.txt;errorsonly -flp2:logfile=warnings.txt;warningsonly

次の例は、その他の可能性を示しています。

-fileLoggerParameters:LogFile=MyLog.log;Append; Verbosity=diagnostic;Encoding=UTF-8

-flp:Summary;Verbosity=minimal;LogFile=msbuild.sum

-flp1:warningsonly;logfile=msbuild.wrn

-flp2:errorsonly;logfile=msbuild.err
-logger:logger

-l:logger
MSBuild からのイベントのログ記録に使用するロガーを指定します。 複数のロガーを指定するには、各ロガーを個別に指定します。

loggerには次の構文を使用します: [LoggerClass,]LoggerAssembly[;LoggerParameters]

LoggerClassには次の構文を使用します: [PartialOrFullNamespace.]LoggerClassName

アセンブリにロガーが 1 つだけ含まれている場合は、ロガー クラスを指定する必要はありません。

LoggerAssemblyには次の構文を使用します: AssemblyName[,StrongName] \| AssemblyFile

ロガー パラメーターは省略可能であり、入力したとおりにロガーに渡されます。

次の例では、-logger スイッチを使用します。

-logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML
-noConsoleLogger

-noconlog
既定のコンソール ロガーを無効にし、コンソールにイベントをログに記録しません。
-terminalLogger[:autoonoff]

-tl[:autoonoff]
ターミナル ロガーを有効または無効にします。 ターミナル ロガーは、リアルタイムでコンソール上の強化されたビルド出力を提供し、プロジェクトごとに論理的に編成され、実用的な情報を強調表示するように設計されています。 標準出力がリダイレクトされない場合にのみターミナル ロガーを使用するには、auto を指定します (または、引数を指定せずにオプションを使用します)。 出力を解析しないか、それ以外の場合は将来のバージョンで変更されずに使用しないでください。 このオプションは、MSBuild 17.8 以降で使用できます。

次の例では、MyProject.proj プロジェクトの rebuild ターゲットをビルドします。

MSBuild.exe MyProject.proj -t:rebuild

関連項目