Usar variáveis de ambiente em um build

Quando você compila projetos, geralmente é necessário definir opções de build usando informações que não estão no arquivo de projeto ou nos arquivos que compõem seu projeto. Normalmente, essas informações são armazenadas em variáveis de ambiente.

Referenciar variáveis de ambiente

Todas as variáveis de ambiente que são nomes de propriedades válidos do MSbuild estão disponíveis para o arquivo de projeto do Microsoft Build Engine (MSBuild) como propriedades. Os nomes de propriedade válidos são descritos nas propriedades do MSBuild. Por exemplo, as variáveis de ambiente que começam com um número não estão disponíveis no MSBuild.

Observação

Se o arquivo de projeto contiver uma definição explícita de uma propriedade que tem o mesmo nome que uma variável de ambiente, a propriedade no arquivo de projeto substituirá os valores de uma variável de ambiente.

Para usar uma variável de ambiente em um projeto MSBuild

  • Faça referência à variável de ambiente da mesma maneira que faria com uma variável declarada em seu arquivo de projeto. Por exemplo, o código a seguir faz referência à variável de ambiente BIN_PATH:

    <FinalOutput>$(BIN_PATH)\MyAssembly.dll</FinalOutput>

    Você pode usar um atributo Condition para fornecer um valor padrão para uma propriedade se a variável de ambiente não foi definida.

Para fornecer um valor padrão de uma propriedade

  • Use um atributo Condition em uma propriedade para definir o valor somente se a propriedade não tiver nenhum valor. Por exemplo, o seguinte código define a propriedade ToolsPath como c:\tools somente se a variável de ambiente ToolsPath não está definida:

    <ToolsPath Condition="'$(TOOLSPATH)' == ''">c:\tools</ToolsPath>

    Observação

    Os nomes de propriedade não diferenciam maiúsculas de minúsculas então $(ToolsPath) e $(TOOLSPATH) fazem referência à mesma variável de ambiente ou propriedade.

Exemplo

O arquivo de projeto a seguir usa variáveis de ambiente para especificar o local dos diretórios.

<Project DefaultTargets="FakeBuild">
    <PropertyGroup>
        <FinalOutput>$(BIN_PATH)\myassembly.dll</FinalOutput>
        <ToolsPath Condition=" '$(ToolsPath)' == '' ">
            C:\Tools
        </ToolsPath>
    </PropertyGroup>
    <Target Name="FakeBuild">
        <Message Text="Building $(FinalOutput) using the tools at $(ToolsPath)..."/>
    </Target>
</Project>