Использование ссылки на имя или расположение файла проекта

Имя или расположение проекта в файле проекта можно использовать без создания отдельного свойства. MSBuild предоставляет зарезервированные свойства, ссылающиеся на имя файла проекта, и другие свойства, связанные с проектом. Дополнительные сведения о зарезервированных свойствах см. в статье Зарезервированные и стандартные свойства MSBuild.

Использование свойств проекта

MSBuild предоставляет некоторые зарезервированные свойства, которые можно использовать в файлах проекта, не определяя их каждый раз. Например, зарезервированное свойство MSBuildProjectName предоставляет ссылку на имя файла проекта. Зарезервированное свойство MSBuildProjectDirectory предоставляет ссылку на расположение файла проекта.

Использование свойств проекта

  • Укажите ссылка на свойство в файле проекта с помощью нотации $() так же, как и для любого свойства. Например:

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

    Преимущество использования зарезервированного свойства заключается в том, что любые изменения имени файла проекта применяются автоматически. В следующий раз при сборке проекта выходной файл будет иметь новое имя, и это не потребует никаких дополнительных действий с вашей стороны.

    См. сведения об использовании специальных символов MSBuild в ссылках на файл или проект.

Примечание.

Зарезервированные свойства нельзя переопределить в файле проекта.

Пример 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.