Compartilhar via


Utilizar variáveis de ambiente em uma compilação

Quando você cria 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. Essas informações normalmente são armazenadas em variáveis de ambiente.

Observação

O MSBuild trata variáveis de ambiente como entradas confiáveis. Eles podem fazer com que o MSBuild carregue a lógica de compilação, como tarefas, .targets ou arquivos .props de locais personalizados ou altere como a compilação é executada.

Variáveis de ambiente de referência

Todas as variáveis de ambiente que são nomes válidos da propriedade MSBuild estão disponíveis para o arquivo de projeto 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 tenha o mesmo nome de uma variável de ambiente, a propriedade no arquivo de projeto substituirá o valor da variável de ambiente.

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

  • Faça referência à variável de ambiente da mesma maneira que 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 Condition atributo para fornecer um valor padrão para uma propriedade se a variável de ambiente não tiver sido definida.

Para fornecer um valor padrão para uma propriedade

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

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

    Observação

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

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>