Referenciar o nome ou o local do arquivo de projeto

Você pode usar o nome ou local do projeto no próprio arquivo de projeto sem ter de criar sua própria propriedade. O MSBuild fornece propriedades reservadas que referenciam o nome do arquivo de projeto e outras propriedades relacionadas ao projeto. Para obter mais informações sobre propriedades reservadas, confira Propriedades reservadas e conhecidas do MSBuild.

Usar as propriedades do projeto

O MSBuild fornece algumas propriedades reservadas que você pode usar em seus arquivos de projeto sem precisar sempre defini-las. Por exemplo, a propriedade reservada MSBuildProjectName fornece uma referência ao nome do arquivo de projeto. Por exemplo, a propriedade reservada MSBuildProjectDirectory fornece uma referência ao nome do arquivo de projeto.

Para usar as propriedades do projeto

  • Faça referência à propriedade no arquivo de projeto com a notação $(), como faria com qualquer propriedade. Por exemplo:

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

    Uma vantagem de usar uma propriedade reservada é que qualquer alteração no nome do arquivo de projeto é incorporada automaticamente. Na próxima vez que você compilar o projeto, o arquivo de saída terá o novo nome sem necessidade de ação adicional de sua parte.

    Para obter mais informações sobre o uso de caracteres especiais em referências de arquivo ou projeto, consulte Caracteres especiais do MSBuild.

Observação

As propriedades reservadas não podem ser redefinidas no arquivo de projeto.

Exemplo 1

O arquivo de projeto de exemplo a seguir faz referência ao nome de projeto como uma propriedade reservada para especificar o nome para a saída.

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

Exemplo 2

O arquivo de projeto de exemplo a seguir usa a propriedade reservada MSBuildProjectDirectory para criar o caminho completo para um arquivo no local do arquivo de projeto.

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

O exemplo usa a sintaxe da função Property para chamar o método System.IO.Path.Combine estático do .NET Framework.