MSBuild のコマンドとプロパティの共通マクロ
Visual Studio のインストール オプションによっては、MSBuild に基づいた .vcxproj Visual Studio プロジェクトで数百のマクロを使用できるようにすることができます。 マクロは、既定で設定されている MSBuild プロパティ、.props または .targets ファイル内の MSBuild プロパティ、またはお使いのプロジェクトの設定内にある MSBuild プロパティに対応しています。 次のマクロは、プロジェクトの [プロパティ ページ] ダイアログ ボックス内の、文字列を入力できるどの場所にも使用できます。 これらのマクロは大文字と小文字が区別されません。
現在のプロパティとマクロを表示する
現在使用できるすべてのマクロを表示するには、[プロパティ ページ] ダイアログの [VC++ ディレクトリ] で、プロパティ行の末尾にあるドロップダウン矢印を選択します。 [編集] を選択し、編集ダイアログ ボックスで [マクロ] ボタンを選択します。 Visual Studio に表示されているプロパティとマクロの現在のセットが、それぞれの現在の値と共に表示されます。 詳細については、C++ プロジェクトのプロパティ ページのリファレンスのユーザー定義の値の指定に関するセクションを参照してください。

一般的なマクロの一覧
次の表は、使用可能なマクロの中でよく使われるサブセットを示しています。ここに示されていないものも多数あります。 [マクロ] ダイアログにアクセスして、プロジェクトのすべてのプロパティとその現在の値を確認してください。 MSBuild プロパティ定義がどのように作成され、.props、.targets、および .vcxproj ファイル内でマクロとして使用されるかについて詳しくは、「MSBuild プロパティ」を参照してください。
| マクロ | [説明] |
|---|---|
$(Configuration) |
現在のプロジェクト構成の名前 ("Debug" など)。 |
$(DevEnvDir) |
Visual Studio のインストール ディレクトリ (ドライブ + パスで定義) です。末尾の円記号 '\' を含みます。 |
$(FrameworkDir) |
.NET Framework をインストールしたディレクトリです。 |
$(FrameworkSDKDir) |
.NET Framework をインストールしたディレクトリです。 .NET Framework は、Visual Studio 一部としてインストールされている場合も、個別にインストールされている場合もあります。 |
$(FrameworkVersion) |
Visual Studio が使用する .NET Framework のバージョンです。 $(FrameworkDir)と組み合わせると、Visual Studio が使用する .NET Framework のバージョンへの完全なパスになります。 |
$(FxCopDir) |
fxcop.cmd ファイルへのパス fxcop.cmd ファイルは、Visual Studio のすべてのエディションにインストールされているとは限りません。 |
$(IntDir) |
中間ファイルに指定されたディレクトリへのパスです。 相対パスの場合、中間ファイルはこのパスを通じてプロジェクト ディレクトリに追加されます。 このパスの末尾にはスラッシュが必要です。 これは Intermediate Directory プロパティの値に解決されます。 $(OutDir) を使ってこのプロパティを定義しないでください。 |
$(OutDir) |
出力ファイルのディレクトリへのパスです。 相対パスの場合、出力ファイルはこのパスを通じてプロジェクト ディレクトリに追加されます。 このパスの末尾にはスラッシュが必要です。 これは、Output Directory プロパティの値に解決されます。 $(IntDir) を使ってこのプロパティを定義しないでください。 |
$(Platform) |
現在のプロジェクト プラットフォームの名前 (例: "Win32") です。 |
$(PlatformShortName) |
現在のアーキテクチャの短い名前 ("x86"、"x64" など)。 |
$(ProjectDir) |
プロジェクトのディレクトリ (ドライブ + パスで定義) です。最後に円記号 (\) が含まれます。 |
$(ProjectExt) |
プロジェクトのファイル拡張子。 ファイル拡張子の前にピリオド '.' が付きます。 |
$(ProjectFileName) |
プロジェクトのファイル名 (基本名 + ファイル拡張子で定義) です。 |
$(ProjectName) |
プロジェクトの基本名です。 |
$(ProjectPath) |
プロジェクトの絶対パス名 (ドライブ + パス + 基本名 + ファイル拡張子で定義) です。 |
$(PublishDir) |
発行先の出力場所。末尾の円記号 '\' を含みます。 既定値は $(OutDir)app.publish\ フォルダーです。 |
$(RemoteMachine) |
[デバッグ] プロパティ ページで Remote Machine プロパティの値を設定します。 詳細については、「C/C++ デバッグ構成のプロジェクト設定」を参照してください。 |
$(RootNameSpace) |
アプリケーションを含む名前空間 (定義されている場合) です。 |
$(SolutionDir) |
ソリューションのディレクトリ (ドライブ + パスで定義) です。最後に円記号 (\) が含まれます。 IDE でソリューションをビルドする場合にのみ定義されます。 |
$(SolutionExt) |
ソリューションのファイル拡張子です。 ファイル拡張子の前にピリオド '.' が付きます。 IDE でソリューションをビルドする場合にのみ定義されます。 |
$(SolutionFileName) |
ソリューションのファイル名 (基本名 + ファイル拡張子で定義) です。 IDE でソリューションをビルドする場合にのみ定義されます。 |
$(SolutionName) |
ソリューションの基本名です。 IDE でソリューションをビルドする場合にのみ定義されます。 |
$(SolutionPath) |
ソリューションの絶対パス名 (ドライブ + パス + 基本名 + ファイル拡張子で定義) です。 IDE でソリューションをビルドする場合にのみ定義されます。 |
$(TargetDir) |
ビルドのプライマリ出力ファイルのディレクトリ (ドライブ + パスで定義) です。最後に円記号 (\) が含まれます。 |
$(TargetExt) |
ビルドのプライマリ出力ファイルのファイル拡張子。 ファイル拡張子の前にピリオド '.' が付きます。 |
$(TargetFileName) |
ビルドのプライマリ出力ファイルの名前 (基本名 + ファイル拡張子で定義) です。 |
$(TargetName) |
ビルドのプライマリ出力ファイルの基本名です。 |
$(TargetPath) |
ビルドのプライマリ出力ファイルの絶対パス名 (ドライブ + パス + 基本名 + ファイル拡張子で定義) です。 |
$(VCInstallDir) |
Visual Studio インストールの C++ コンテンツを格納するディレクトリ。 このプロパティにはターゲットの Microsoft C++ (MSVC) ツールセットのバージョンが含まれますが、ホストの Visual Studio とは異なることがあります。 たとえば、$(PlatformToolset) = v140 を設定してビルドした場合、$(VCInstallDir) には Visual Studio 2015 インストールへのパスが含まれます。 |
$(VSInstallDir) |
Visual Studio をインストールしたディレクトリです。 このプロパティにはターゲットの Visual Studio ツールセットのバージョンが含まれますが、ホストの Visual C++ とは異なることがあります。 たとえば、$(PlatformToolset) = v110 を設定してビルドした場合、$(VSInstallDir) には Visual Studio 2012 インストールへのパスが含まれます。 |
$(WebDeployPath) |
Web 配置のルートから、プロジェクト出力が存在するディレクトリへの相対パスです。 |
$(WebDeployRoot) |
<localhost> の場所への絶対パスです。 たとえば、「c:\inetpub\wwwroot」のように入力します。 |
古いマクロ
C++ のビルド システムは、Visual Studio 2008 と Visual Studio 2010 の間で大幅に変更されました。 以前のプロジェクトの種類で使用されていた多くのマクロは、新しいものに変更されています。 これらのマクロは使用されなくなったか、あるいは 1 つまたは複数の同等のプロパティまたは 項目メタデータ マクロ (%(item-name)) 値に置き換えられました。 "移行済み" とマークされたマクロは、プロジェクトの移行ツールによって更新できます。 そのマクロを含むプロジェクトが Visual Studio 2008 以前から Visual Studio 2010 に移行された場合、Visual Studio はそのマクロを同等の現在のマクロに変換します。 新しいバージョンの Visual Studio は、プロジェクトを Visual Studio 2008 以前から新しいプロジェクトの種類に変換できません。 2 つの手順でこれらのプロジェクトを変換する必要があります。まず Visual Studio 2010 に変換し、Visual Studio の新しいバージョンにその結果を変換します。 詳細については、「Overview of potential upgrade issues」 (アップグレードの潜在的な問題の概要) を参照してください。
| マクロ | 説明 |
|---|---|
$(InputDir) |
(移行済み)。入力ファイルのディレクトリ (ドライブ + パスとして定義されます)。には末尾の円記号 '\' が含まれています。 プロジェクトが入力の場合、このマクロは $(ProjectDir)と同等です。 |
$(InputExt) |
(移行済み)。入力ファイルのファイル拡張子。 ファイル拡張子の前にピリオド '.' が付きます。 プロジェクトが入力の場合、このマクロは $(ProjectExt)と同等です。 ソース ファイルの場合は、%(Extension) と同じです。 |
$(InputFileName) |
(移行済み)。入力ファイルのファイル名 (ベース名 + ファイル拡張子として定義)。 プロジェクトが入力の場合、このマクロは $(ProjectFileName)と同等です。 ソース ファイルの場合は、%(Identity) と同じです。 |
$(InputName) |
(移行済み)。入力ファイルのベース名。 プロジェクトが入力の場合、このマクロは $(ProjectName)と同等です。 ソース ファイルの場合は、%(Filename) と同じです。 |
$(InputPath) |
(移行済み)。)入力ファイルの絶対パス名 (ドライブ + パス + ベース名 + ファイル拡張子として定義)。 プロジェクトが入力の場合、このマクロは $(ProjectPath)と同等です。 ソース ファイルの場合は、%(FullPath) と同じです。 |
$(ParentName) |
このプロジェクト項目を含む項目の名前です。 これは、親フォルダー名またはプロジェクト名です。 |
$(SafeInputName) |
有効なクラス名としてのファイル名です。ファイル拡張子は除きます。 このプロパティには、正確に等しいものはありません。 |
$(SafeParentName) |
有効な名前形式で指定された、直接の親の名前です。 たとえば、フォームは .resx ファイルの親です。 このプロパティには、正確に等しいものはありません。 |
$(SafeRootNamespace) |
プロジェクト ウィザードでコードが追加される名前空間の名前です。 この名前空間名に含まれるのは、有効な C++ 識別子で許可される文字列だけです。 このプロパティには、正確に等しいものはありません。 |
関連項目
Visual Studio プロジェクト - C++
Visual C++ 移植とアップグレードのガイド
アップグレード時の潜在的な問題の概要
MSBuild の既知の項目メタデータ