次の方法で共有


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

When you use MSBuild.exe to build a project or solution file, you can include several switches to specify various aspects of the process.

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

The .NET CLI commands dotnet build, dotnet publish, dotnet msbuild and related commands pass these switches to MSBuild, so this reference is applicable when you use those commands; however dotnet run does not.

Syntax

MSBuild.exe [Switches] [ProjectFile]

Arguments

Argument Description
ProjectFile 指定したプロジェクト ファイル内のターゲットをビルドします。 If you don't specify a project file, MSBuild searches the current working directory for a file name extension that ends in proj and uses that file. この引数に Visual Studio ソリューション ファイルを指定することもできます。 Visual Studio 17.12 以降では、.slnx ソリューション ファイル形式と .sln 形式がサポートされています。 同じソリューションの .sln ファイルと .slnx ファイルの両方を同じディレクトリに存在させることができます。両方が存在する場合は、ソリューションをビルドするためにそのうちの 1 つを明示的に指定する必要があります。

Switches

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

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

Switch Description
-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
Don't include any MSBuild.rsp or Directory.Build.rsp files automatically.
-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 属性内のターゲットの代わりに実行されます。 詳細については、「ターゲット のビルド順序の」と「方法: 最初にビルドするターゲットを指定するを参照してください。

ターゲットはタスクのグループです。 For more information, see Targets.
-targets[:{file}]

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

-tv:{version}
カスタム ツールセットを指定します。 ツールセットは、アプリケーションのビルドに使用されるタスク、ターゲット、およびツールで構成されます。 See Toolset (ToolsVersion) and Standard and custom toolset configurations.
-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} テキスト ファイルからコマンド ライン スイッチを挿入します。 複数のファイルがある場合は、個別に指定します。 For more information, see Response files.
-warnAsError[:{code; ...}]

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

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

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

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

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

例: -noWarn:MSB3026

ロガー用スイッチ

Switch Description
-binaryLogger[:[LogFile=]{output.binlog}
[;ProjectImports=NoneEmbedZipFile]]

-bl[:[LogFile=]{output.binlog}
[;ProjectImports=NoneEmbedZipFile]]
すべてのビルド イベントを圧縮バイナリ ファイルにシリアル化します。 By default the file is in the current directory and named msbuild.binlog. 省略可能な LogFile パラメーターは、フォーム {filename}.binlogの文字列を受け取ります。ここで、 {filename} には有効なファイル システム文字が含まれますが、プレースホルダーシンボル {}も受け入れます。 {}が指定されている場合、MSBuild はその位置にフォーム yyyyMMdd-HHmmss--<current process id>--<6-character random string>の "一意のスタンプ" を入力します。 バイナリ ログは、後でテキスト ログを再構築したり、他の分析ツールで使用したりするために使用できるビルド プロセスの詳細な説明です。 バイナリ ログは、通常、最も詳細なテキスト診断レベルのログよりも 10 ~ 20 倍小さくなりますが、より多くの情報が含まれています。

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

- ProjectImports=None. プロジェクトのインポートを収集しないでください。
- ProjectImports=Embed. プロジェクトのインポートをログ ファイルに埋め込みます (既定)。
- ProjectImports=ZipFile. Save project files to {output}.projectimports.zip where <output> is the same name as the binary log file name.

ProjectImports の既定の設定は [埋め込み] です。
Note: the logger doesn't collect non-MSBuild source files such as .cs, .cpp, and so on.
A .binlog file can be "played back" by passing it to msbuild.exe as an argument instead of a project/solution. 他のロガーは、元のビルドが発生したかのようにログ ファイルに含まれる情報を受け取ります。 バイナリ ログとその使用方法の詳細については、 MSBuild バイナリ ログの概要を参照してください。

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

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

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

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

-consoleLoggerParameters:PerformanceSummary;NoSummary -verbosity:minimal

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

-dfl
各 MSBuild ノードのビルド出力を独自のファイルに記録します。 これらのファイルの最初の場所は現在のディレクトリです。 By default, the files are named 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 つのファイルに記録します。 If you don't specify number, the output file is named 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. ビルド ログの書き込み先となるログ ファイルへのパス。 分散ファイル ロガーは、ログ ファイルの名前にこのパスのプレフィックスを付けます。
- Append. ビルド ログをログ ファイルに追加するか、上書きするかを決定します。 スイッチを設定すると、ビルド ログがログ ファイルに追加されます。 スイッチが存在しない場合、既存のログ ファイルの内容が上書きされます。
例: 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
- 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
-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]
Enable or disable the terminal logger. ターミナル ロガーは、リアルタイムでコンソール上の強化されたビルド出力を提供し、プロジェクトごとに論理的に編成され、実用的な情報を強調表示するように設計されています。 標準出力がリダイレクトされない場合にのみターミナル ロガーを使用するには、auto を指定します (または、引数を指定せずにオプションを使用します)。 出力を解析しないか、それ以外の場合は将来のバージョンで変更されずに使用しないでください。 このオプションは、MSBuild 17.8 以降で使用できます。

Example

The following example builds the rebuild target of the MyProject.proj project.

MSBuild.exe MyProject.proj -t:rebuild

See also