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.