プロジェクト ファイルの名前または場所を参照する

独自のプロパティを作成することなく、プロジェクト ファイル自体のプロジェクトの名前または場所を使用できます。 MSBuild には、プロジェクト ファイル名とプロジェクトに関連するその他のプロパティを参照する、予約済みのプロパティが用意されています。 予約済みのプロパティの詳細については、「MSBuild の予約済みおよび既知のプロパティ」を参照してください。

プロジェクトのプロパティを使用する

MSBuild には、毎回定義することなくプロジェクト ファイル内で使用できる、いくつかの予約済みプロパティが用意されています。 たとえば、予約済みプロパティ MSBuildProjectName はプロジェクト ファイル名への参照を提供します。 予約済みプロパティ MSBuildProjectDirectory はプロジェクト ファイルの場所への参照を提供します。

プロジェクトのプロパティを使用するには

  • 他のすべてのプロパティの場合と同様に、$() 表記でプロジェクト ファイルのプロパティを参照します。 たとえば次のような点です。

    <CSC Sources = "@(CSFile)"
        OutputAssembly = "$(MSBuildProjectName).exe"/>
    </CSC>
    

    予約済みのプロパティを使用する利点は、プロジェクト ファイル名への変更がすべて自動的に組み込まれることです。 次回プロジェクトをビルドするとき、出力ファイルに新しい名前が付けられ、追加の操作は必要ありません。

    ファイル参照またはプロジェクト参照での特殊文字の使用の詳細については、「MSBuild の特殊文字」を参照してください。

Note

予約済みのプロパティは、プロジェクト ファイルで再定義できません。

例 1

次の例では、プロジェクト ファイルは出力の名前を指定する予約済みのプロパティとして、プロジェクト名を参照します。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
    DefaultTargets = "Compile">

    <!-- Specify the inputs -->
    <ItemGroup>
        <CSFile Include = "consolehwcs1.cs"/>
     </ItemGroup>
    <Target Name = "Compile">
        <!-- Run the Visual C# compilation using
        input files of type CSFile -->
        <CSC Sources = "@(CSFile)"
            OutputAssembly = "$(MSBuildProjectName).exe" >
            <!-- Set the OutputAssembly attribute of the CSC task
            to the name of the project -->
            <Output
                TaskParameter = "OutputAssembly"
                ItemName = "EXEFile" />
        </CSC>
        <!-- Log the file name of the output file -->
        <Message Text="The output file is @(EXEFile)"/>
    </Target>
</Project>

例 2

次のプロジェクト ファイルの例では、MSBuildProjectDirectory 予約済みプロパティを使用して、プロジェクト ファイルの場所にあるファイルへの完全パスを作成します。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <!-- Build the path to a file in the root of the project -->
    <PropertyGroup>
        <NewFilePath>$([System.IO.Path]::Combine($(MSBuildProjectDirectory), `BuildInfo.txt`))</NewFilePath>
    </PropertyGroup>
</Project>

この例では、プロパティ関数の構文を使用して、静的な .NET Framework メソッド System.IO.Path.Combine を呼び出しています。