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

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

構文

MSBuild.exe [Switches] [ProjectFile]  

引数

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

スイッチ

スイッチ 省略形 説明
/help /? または /h 使用方法を表示します。 たとえば、次のようなコマンドになります。

msbuild.exe /?
/detailedsummary /ds ビルド ログの最後に、ビルドされた構成に関する詳細情報と、それらの構成がノードに対してどのようにスケジュールされているかについて表示します。
/ignoreprojectextensions: extensions /ignore: extensions ビルドするプロジェクト ファイルを決定するときに、指定した拡張子を無視します。 次の例に示すように、セミコロンまたはコンマを使用して複数の拡張子を区切ります。

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

次の例では、MSBuild に対して 3 つの MSBuild プロセスを使用してビルドするように命令するため、3 つのプロジェクトを同時にビルドできます。

msbuild myproject.proj /maxcpucount:3
/noautoresponse /noautorsp MSBuild.rsp ファイルが自動的に取り込まれないようにします。
/nodeReuse:value /nr:value MSBuild ノードの再利用を有効または無効にします。 次の値を指定できます。

- True。 ビルドが完了した後もノードは維持され、後続のビルドでノードが再利用されます (既定値)。
- False。 ビルドの完了後、ノードは維持されません。

ノードは実行中のプロジェクトに対応します。 /maxcpucount スイッチを含めた場合、複数のノードを同時に実行できます。
/nologo 著作権情報を表示しません。
/preprocess[:filepath] /pp[:filepath] ビルド中にインポートされるすべてのファイルをインライン展開することで、単一の集約されたプロジェクト ファイルを作成します。ファイルの境界にはマークが挿入されます。 このスイッチを使用して、インポートされるファイル、ファイルのインポート元、およびビルドに関連するファイルを簡単に特定できます。 このスイッチを使用した場合、プロジェクトはビルドされません。

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

Import 要素を使用してプロジェクト ファイルを他のプロジェクト ファイルに挿入する方法については、「Import 要素 (MSBuild)」と「方法: 複数のプロジェクト ファイルで同じターゲットを使用する」を参照してください。
/property:name=value /p:name=value 指定したプロジェクト レベルのプロパティを設定またはオーバーライドします。name はプロパティ名、value はプロパティ値です。 各プロパティを個別に指定するか、次の例に示すようにセミコロンまたはコンマを使用して複数のプロパティを区切ります。

/property:WarningLevel=2;OutDir=bin\Debug
/target:targets /t: targets プロジェクト内で指定されたターゲットをビルドします。 各ターゲットを個別に指定するか、次の例に示すようにセミコロンまたはコンマを使用して複数のターゲットを区切ります。

/target:Resources;Compile

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

ターゲットとは、タスクのグループを表します。 詳細については、ターゲットに関する記事を参照してください。
/toolsversion:version /tv:version 次の例に示すように、プロジェクトのビルドに使用するツールセットのバージョンを指定します: /toolsversion:3.5

このスイッチを使用すると、プロジェクトをビルドし、「Project 要素 (MSBuild)」で指定したバージョンとは異なるバージョンを指定できます。 詳細については、「ToolsVersion 設定をオーバーライドする」を参照してください。

MSBuild 4.5 では、version の値として 2.0、3.5、4.0 を指定できます。 4.0 を指定した場合、VisualStudioVersion ビルド プロパティでは、使用するサブツールセットを指定します。 詳細については、「ツールセット (ToolsVersion)」の「サブツールセット」のセクションを参照してください。

ツールセットは、アプリケーションのビルドで使用するタスク、ターゲット、およびツールで構成されます。 ツールには、csc.exe や vbc.exe などのコンパイラが含まれます。 ツールセットの詳細については、「ツールセット (ToolsVersion)」、「標準ツールセット構成とカスタム ツールセット構成」、および「マルチ ターゲットの概要」を参照してください。 注: ツールセットのバージョンは、ターゲット フレームワークのバージョン (ビルドするプロジェクトの実行対象となる .NET Framework のバージョン) と同じではありません。 詳細については、「ターゲット フレームワークおよびターゲット プラットフォーム」を参照してください。
/validate:[schema] /val[schema] プロジェクト ファイルを検証し、成功した場合はプロジェクトをビルドします。

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

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

たとえば、次のように設定します。/validate:MyExtendedBuildSchema.xsd
/verbosity:level /v:level ビルド ログに表示する情報量を指定します。 各 logger は、その logger に対して設定された詳細レベルに基づいてイベントを表示します。

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

たとえば、次のように設定します。/verbosity:quiet
/version /ver バージョン情報だけを表示します。 プロジェクトはビルドされません。
@file テキスト ファイルからコマンドライン スイッチを挿入します。 複数ファイルがある場合は、それらを個別に指定します。 詳細については、「応答ファイル」を参照してください。

ロガーのスイッチ

スイッチ 省略形 説明
/consoleloggerparameters:

parameters
/clp:parameters 指定したパラメーターをコンソール logger に渡し、コンソール ウィンドウにビルド情報を表示します。 次のパラメーターを指定できます。

- PerformanceSummary。 タスク、ターゲット、およびプロジェクトで経過した時間を表示します。
- Summary。 エラーや警告の概要を終了時に表示します。
- NoSummary。 エラーや警告の概要を終了時に表示しません。
- ErrorsOnly。 エラーのみを表示します。
- WarningsOnly。 警告のみを表示します。
- NoItemAndPropertyList。 詳細レベルが diagnostic に設定されている場合、各プロジェクト ビルドの開始時に項目とプロパティの一覧を表示しません。
- ShowCommandLineTaskCommandLineEvent メッセージを表示します。
- ShowTimestamp。 タイムスタンプをメッセージの先頭に表示します。
- ShowEventId。 開始したイベント、終了したイベント、およびメッセージのイベント ID を表示します。
- ForceNoAlign。 テキストをコンソール バッファーのサイズに合わせません。
- DisableConsoleColor。 すべてのログ メッセージに、コンソールの既定の色を使用します。
- DisableMPLogging。 マルチプロセッサ以外のモードで実行されている場合にマルチプロセッサ ログ出力方法を無効にします。
- EnableMPLogging。 マルチプロセッサ以外のモードで実行されている場合でもマルチプロセッサ ログ出力方法を有効にします。 このログ出力方法はデフォルトで有効です。
- Verbosity。 このロガーの /verbosity 設定をオーバーライドします。

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

/consoleloggerparameters:PerformanceSummary;NoSummary /verbosity:minimal
/distributedFileLogger /dfl 各 MSBuild ノードのビルド出力を、そのノード独自のファイルに記録します。 これらのファイルの初期位置は、現在のディレクトリです。 既定では、ファイルの名前は "MSBuildNodeId.log" になります。 /fileLoggerParameters スイッチを使用して、ファイルの場所と fileLogger の他のパラメーターを指定できます。

/fileLoggerParameters スイッチを使用してログ ファイル名を指定すると、分散ロガーはその名前をテンプレートとして使用し、各ノードのログ ファイルを作成するときに、その名前にノード ID を追加します。
/distributedlogger:

central logger*

forwarding logger
/dl:central logger*forwarding logger MSBuild のイベントを記録して、各ノードに異なる logger インスタンスをアタッチします。 複数の logger を指定するには、各 logger を個別に指定します。

logger を指定するには、logger の構文を使用します。 logger の構文については、この後に示されている /logger スイッチを参照してください。

このスイッチを使用する方法を次の例に示します。

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

/dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll
/fileLogger

[number]
/fl[number] ビルド出力を、現在のディレクトリにある単一のファイルに記録します。 number を指定しない場合、出力ファイルの名前は msbuild.log になります。 number を指定した場合、出力ファイルの名前は msbuildn.log になります。この n には、number が設定されます。 Number は、1 から 9 までの数値を指定できます。

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

parameters
/flp:[ number] parameters ファイル logger と分散ファイル logger の追加のパラメーターを指定します。 このスイッチが指定されているということは、対応する /filelogger[number] スイッチが存在することを意味します。 Number は、1 から 9 までの数値を指定できます。

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

- LogFile。 ビルド ログが書き込まれるログ ファイルへのパス。 分散ファイル logger では、このパスをログ ファイル名の先頭に追加します。
- Append。 ビルド ログを、ログ ファイルに追加して記録するか、ログ ファイルを上書きして記録するかについて指定します。 このスイッチを設定すると、ビルド ログはログ ファイルに追加して記録されます。 このスイッチを指定しないと、既存のログ ファイルの内容が上書きして記録されます。
append スイッチを含めた場合、そのスイッチが true または false のどちらに設定されている場合でも、ログが追加して記録されます。 append スイッチを含めない場合、ログは上書きして記録されます。
次の場合、ファイルを上書きして記録します。msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log
次の場合、ファイルを追加して記録します。msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log;append=true
次の場合、ファイルを追加して記録します。msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log;append=false
- Encoding。 ファイルのエンコード (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
/binaryLogger[:[LogFile=]output.binlog[;ProjectImports=[None,Embed,ZipFile]]] /bl すべてのビルド イベントをシリアル化し、バイナリ ファイルを作成します。 既定では、このファイルは現在のディレクトリに置かれ、名前は msbuild.binlog になります。 このバイナリ ログはビルド プロセスの詳しい説明であり、テキスト ログを再構築するために後で利用できます。また、他の分析ツールで利用できます。 バイナリ ログは通常、最も詳しいテキスト診断レベルのログの 10 分の 1 から 20 分の 1 のサイズになります。

既定のバイナリ ロガーはプロジェクト ファイルのソース テキストを収集します。ビルド中に見つけられた、すべてのインポート済みファイルとターゲット ファイルも収集されます。 任意の ProjectImports スイッチでこの動作が制御されます。

- ProjectImports=None プロジェクト インポートを収集しません。
- ProjectImports=Embed ログ ファイルにプロジェクト インポートを埋め込みます (既定)。
- ProjectImports=ZipFile プロジェクト ファイルを output.projectimports.zip に保存します。ここで、output はバイナリ ログ ファイル名と同じ名前になります。

ProjectImports の初期設定は Embed です。
: このロガーは、.cs.cpp など、MSBuild 以外のソース ファイルを収集しません。
.binlog ファイルは、プロジェクト/ソリューションの代わりに引数として msbuild.exe に渡すことで "再生" できます。 その他のロガーは、ログ ファイルに含まれている情報を、元のビルトが行われていたかのように受け取ります。 バイナリ ログとその使用に関する詳細は、https://github.com/Microsoft/msbuild/wiki/Binary-Log にあります。

:
- /bl
- /bl:output.binlog
- /bl:output.binlog;ProjectImports=None
- /bl:output.binlog;ProjectImports=ZipFile
- /bl:..\..\custom.binlog
- /binaryLogger
/logger:

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

logger に対して次の構文を使用します。[``LoggerClass``,]``LoggerAssembly``[;``LoggerParameters``]

LoggerClass に対して次の構文を使用します。[``PartialOrFullNamespace``.]``LoggerClassName

アセンブリに logger が 1 つしか含まれていない場合は、logger クラスを指定する必要はありません。

LoggerAssembly に対して次の構文を使用します。{``AssemblyName``[,``StrongName``] | AssemblyFile``}

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

/logger スイッチを使用する例を次に示します。

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

/logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML
/noconsolelogger /noconlog 既定のコンソール logger を無効にし、イベントのログをコンソールに記録しません。

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

MSBuild.exe MyProject.proj /t:rebuild  

MSBuild.exe を使用して、より複雑なビルドを実行できます。 たとえばそれを使用して、ソリューション内の特定のプロジェクトの特定のターゲットをビルドできます。 NotInSolutionFolder プロジェクトをリビルドし、InSolutionFolder ソリューション フォルダー内にある NewFolder プロジェクトを消去する例を次に示します。

msbuild SlnFolders.sln /t:NotInSolutionfolder:Rebuild;NewFolder\InSolutionFolder:Clean  

関連項目

MSBuild リファレンス
Common MSBuild Project Properties (MSBuild プロジェクトの共通プロパティ)