Compartilhar via


Propriedades do MSBuild

As propriedades são pares nome-valor que podem ser usados para configurar compilações. As propriedades são úteis para passar valores às tarefas, às condições de avaliação, e para armazenar valores que serão referenciados em todo o arquivo de projeto.

Definindo e referenciando propriedades no Arquivo de projeto

As propriedades são declaradas criando um elemento que tem o nome da propriedade como um filho de um elemento de PropertyGroup . Por exemplo, o seguinte XML cria uma propriedade chamada BuildDir que tenha um valor de Build.

<PropertyGroup>
    <BuildDir>Build</BuildDir>
</PropertyGroup>

Durante qualquer arquivo de projeto, as propriedades são referenciadas usando a sintaxe $ (PropertyName). Por exemplo, a propriedade no exemplo anterior é referenciada usando $ (BuildDir).

Os valores de propriedade podem ser alterados redefinindo a propriedade. A propriedade de BuildDir pode ser fornecida um novo valor usando este XML:

<PropertyGroup>
    <BuildDir>Alternate</BuildDir>
</PropertyGroup>

As propriedades são avaliadas na ordem em que aparecem no arquivo de projeto. O novo valor para BuildDir deve ser declarado após o valor antigo é atribuído.

Propriedades Reservadas

MSBuild reserva alguns nomes de propriedade para armazenar informações sobre o arquivo de projeto e os binários de MSBuild. Essas propriedades são referenciadas usando notação $, assim como qualquer outra propriedade. Por exemplo, $ (MSBuildProjectFile) retorna o nome de arquivo completo do arquivo de projeto, incluindo a extensão de nome de arquivo.

Para obter mais informações, consulte Como referenciar o nome ou local do arquivo de projeto e Propriedades reservadas e conhecidas do MSBuild.

Propriedades de ambiente

Você pode fazer referência a variáveis de ambiente em arquivos de projeto mesma forma que você faz referência a propriedades autorais. Por exemplo, para usar a variável de ambiente PATH no arquivo de projeto, use caminho ($). Se o projeto contém uma definição de propriedade que tem o mesmo nome de uma propriedade de ambiente, a propriedade no projeto substitui o valor da variável de ambiente.

Cada projeto do MSBuild tem um bloco isolado de ambiente: consulta somente leitura e grava ao seus próprias bloco. MSBuild lê apenas variáveis de ambiente quando inicializa a coleção de propriedade, antes que o arquivo de projeto é avaliado ou compilado. Após o esse, as propriedades de ambiente são estáticas, isto é, inicia desovados de cada ferramenta com os mesmos nomes e valores.

Para obter o valor atual de variáveis de ambiente em uma ferramenta desovada, use Funções de propriedades System.Environment.GetEnvironmentVariable. O método preferido, entretanto, é usar o parâmetro EnvironmentVariablesde tarefas. As propriedades de ambiente definidas nesta matriz de cadeias de caracteres podem ser passados à ferramenta desovada sem afetar as variáveis de ambiente do sistema.

Dica

Nem todos as variáveis de ambiente são lidos na transformar propriedades iniciais.Qualquer variável de ambiente cujo nome não for nomes de propriedade válidos do MSBuild, como “386 ", é ignorado.

Para obter mais informações, consulte Como usar variáveis de ambiente em uma compilação.

Propriedades do Registro

Você pode ler valores de Registro do sistema usando a seguinte sintaxe, onde Hive é o seção do Registro (por exemplo, <), Key é o nome da chave, SubKey é o nome da subchave, e Value é o valor da subchave.

$(registry:Hive\MyKey\MySubKey@Value)

Para obter o valor padrão da subchave, omitir Value.

$(registry:Hive\MyKey\MySubKey)

Este valor do Registro pode ser usado para inicializar uma propriedade de compilação. Por exemplo, para criar uma propriedade de compilação que representa a página inicial da web browser do Visual Studio, use este código:

<PropertyGroup>
  <VisualStudioWebBrowserHomePage>
    $(registry:HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\WebBrowser@HomePage)
  </VisualStudioWebBrowserHomePage>
<PropertyGroup>

Propriedades globais

MSBuild permite que você propriedades definidas na linha de comando usando a opção de /property (ou /p). Esses valores de propriedade globais substituem os valores de propriedades que são definidas no arquivo de projeto. Isso inclui propriedades de ambiente, mas não inclui as propriedades reservadas, o que não podem ser modificadas.

O exemplo a seguir define a propriedade global de Configuration a DEBUG.

msbuild.exe MyProj.proj /p:Configuration=DEBUG

As propriedades globais também podem ser definidas ou modificado para projetos filhos em uma construção de multiprojeto usando o atributo Properties de tarefa de MSBuild. Para obter mais informações, consulte Tarefa MSBuild.

Se você especificar uma propriedade usando o atributo TreatAsLocalProperty em uma marca do projeto, esse valor da propriedade global não substitui o valor da propriedade que é definido no arquivo de projeto. Para obter mais informações, consulte Elemento Project (MSBuild) e Como compilar os mesmos arquivos de origem com opções diferentes.

Propriedade roles

Iniciando no .NET Framework versão 4, você pode usar funções de propriedade para avaliar os scripts do MSBuild. Você pode ler a hora do sistema, comparar cadeias de caracteres, coincidir com expressões regulares, e executar muitas outras ações em seu script de compilação sem usar tarefas do MSBuild.

Você pode usar métodos de cadeia de caracteres (instância) para operar em qualquer valor de propriedade, e você pode chamar métodos estáticos de muitas classes do sistema. Por exemplo, você pode definir uma propriedade de compilação a data de hoje como segue.

<Today>$([System.DateTime]::Now.ToString("yyyy.MM.dd"))</Today>

Para obter mais informações, e uma lista de funções de propriedade, consulte Funções de propriedades.

Criando propriedades durante a execução

Os elementos posicionados externos propriedades de Target são atribuídos valores durante a fase de avaliação de uma compilação. Durante a fase de execução subsequente, as propriedades podem ser criadas ou alterado como segue:

  • Uma propriedade pode ser emitida por qualquer tarefa. Para emitir uma propriedade, o elemento de Tarefa deve ter um elemento filho de Saída que tem um atributo de PropertyName .

  • Uma propriedade pode ser emitida por tarefa de CreateProperty . Esse uso é substituído.

  • Iniciando no .NET Framework 3.5, os elementos de Target podem conter elementos de PropertyGroup que podem conter declarações de propriedade.

Armazenando nas propriedades XML

As propriedades podem conter XML arbitrário, que podem ajudar em passar valores às tarefas ou em exibir informações de log. O exemplo a seguir mostra a propriedade de ConfigTemplate , que tem um valor que contém XML e outras referências de propriedade. MSBuild substitui as referências da propriedade usando seus valores de propriedade respectivos. Os valores de propriedade são atribuídos na ordem em que aparecem. Portanto, nesse exemplo, $(MySupportedVersion), $(MyRequiredVersion), e $(MySafeMode) já devem ter sido definidos.

<PropertyGroup>
    <ConfigTemplate>
        <Configuration>
            <Startup>
                <SupportedRuntime
                    ImageVersion="$(MySupportedVersion)"
                    Version="$(MySupportedVersion)"/>
                <RequiredRuntime
                    ImageVersion="$(MyRequiredVersion)
                    Version="$(MyRequiredVersion)"
                    SafeMode="$(MySafeMode)"/>
            </Startup>
        </Configuration>
    </ConfigTemplate>
</PropertyGroup>

Consulte também

Tarefas

Como usar variáveis de ambiente em uma compilação

Como referenciar o nome ou local do arquivo de projeto

Como compilar os mesmos arquivos de origem com opções diferentes

Referência

Propriedades reservadas e conhecidas do MSBuild

Elemento Property (MSBuild)

Outros recursos

Conceitos do MSBuild

MSBuild