MSBuild.exe を使用してソリューション内の特定のターゲットをビルドする
MSBuild.exe 使用して、ソリューション内の特定のプロジェクトの特定のターゲットをビルドできます。
ソリューション内の特定のプロジェクトの特定のターゲットをビルドするには
コマンド ラインで、ディレクトリをソリューション フォルダーに変更し、「
MSBuild.exe <SolutionName>.sln
」と入力しますが、Enter キーを押さないでください。 ソリューション名を使用します。-target:
スイッチの後ろに、<ProjectName>:<TargetName> という形式でターゲットを指定します。 文字%
、$
、@
、;
、.
、(
、)
、または'
のいずれかがプロジェクト名に含まれている場合、指定したターゲット名において、それらの文字を_
に置き換えます。
使用可能なターゲットがわからない場合は、-targets
(-ts
) スイッチを使用して MSBuild を呼び出すことで、1 つのプロジェクトで使用可能なターゲットの一覧を取得できます。 たとえば、MSBuild.exe -ts SomeProject.proj
のようにします。 -targets
または -ts
オプションは、ソリューション ファイルではなく、プロジェクト ファイルでのみ使用できます。
例
次の例では、NotInSlnFolder
プロジェクトの Rebuild
ターゲットを実行してから、NewFolder ソリューション フォルダーにある InSolutionFolder
プロジェクトの Clean
ターゲットを実行します。
msbuild SlnFolders.sln -target:NotInSlnfolder:Rebuild;NewFolder\InSolutionFolder:Clean
特定のターゲットをビルドすると、他の依存ターゲットのビルドもトリガーされます。
Note
targets
スイッチで使用されるパスは、ファイルシステム パスではありません。 これは、ソリューションの内部表現でのパスであり、ソリューション エクスプローラーに表示されます。 たとえば、targets
スイッチでは .
や ..
などのファイルシステム パスの構文を使用することはできません。 そのため、NotInSlnFolder
のような別のファイルシステムの場所にあるプロジェクトを参照する場合、明示的なパスは必要ありませんが、InSolutionFolder
のようなソリューション フォルダー内にあるプロジェクトを参照する場合は必要になります。 ソリューションにもフォルダーを作成できます。これらのフォルダーは Visual Studio の [追加] > [ソリューション フォルダー] で作成します。 これらのフォルダーは、Visual Studio のソリューション エクスプローラーでソリューションを表示するときに、ソリューション内のプロジェクトを整理するために使用されます。 ファイルシステムのレイアウトはソリューション フォルダーの構造と異なる場合があります。 「ソリューション フォルダー」を参照してください。
トラブルシューティング
ソリューション プロジェクトを確認したい場合は、MSBuild によって提供されているこれを行うためのデバッグ オプションを使用できます。 環境変数 MSBUILDEMITSOLUTION=1
を設定し、ソリューションをビルドします。 これにより <SolutionName>.sln.metaproj という名前の MSBuild ファイルが作成され、ビルド時に MSBuild によるソリューションの内部ビューが表示されます。 このビューを調べることで、ビルドできるターゲットや、その他の構成の詳細を特定することができます。
この内部ビューを必要としない場合は、この環境変数を設定した状態でビルドしないでください。 ソリューションでプロジェクトをビルドする際に、この設定が問題を引き起こす可能性があります。 代わりにバイナリ ログを確認してください。