次の方法で共有


予約済みプロパティを使用してプロジェクト ファイル名または場所を参照する

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

[前提条件]

MSBuild を使用してビルドする Visual Studio プロジェクト。

予約済みプロジェクトのプロパティを使用する

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

予約済みプロパティを使用する利点は、プロジェクト ファイル名に対する変更が自動的に組み込まれることです。 次にプロジェクトをビルドすると、プロパティを使用する出力ファイルやその他のファイル名が自動的に新しい名前に更新されます。

プロジェクト プロパティを使用するには、プロパティと同様に、 $() 表記でプロジェクト ファイル内のプロパティを参照します。 例えば次が挙げられます。

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

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

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

MSBuildProjectName を使用して出力ファイル名を指定する

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

<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>

MSBuildProjectDirectory を使用してファイルへの完全なパスを作成する

次のプロジェクト ファイルの例では、 MSBuildProjectDirectory 予約済みプロパティを使用して、プロジェクト ファイルの場所にファイルへの完全なパスを作成します。 この例では、 プロパティ関数の構文 を使用して、静的な .NET Framework メソッド System.IO.Path.Combineを呼び出します。

<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>