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 os valores que serão referenciados em todo o arquivo de projeto.

definindo e referenciando propriedades em um projeto Arquivo

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 tem um valor de Build.

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

Durante qualquer arquivo de projeto, as propriedades são referenciadas usando a sintaxePropertyName$ ().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 determinada 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 reservados

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 de $, 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 MSBuild reservado propriedades.

Propriedades de ambiente

Você pode consultar variáveis de ambiente em arquivos de projeto da mesma forma que você faz referência propriedades autorais.Por exemplo, para usar a variável de ambiente de 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 para seu próprio bloco.MSBuild lê apenas variáveis de ambiente quando inicializa a coleção da propriedade, antes que o arquivo de projeto é avaliado ou compilado.Após o, 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 propriedade System.Environment.GetEnvironmentVariable.O método preferido, entretanto, é usar o parâmetro EnvironmentVariablesde tarefas.As propriedades de ambiente definidas em esta matriz de cadeias de caracteres podem ser passados à ferramenta desovada sem afetar as variáveis de ambiente do sistema.

DicaDica

Nem todos as variáveis de ambiente são lidos em para transformar propriedades iniciais.Qualquer variável de ambiente cujo nome não está 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 é o Hive seção do Registro (por exemplo,), Key HKEY_LOCAL_MACHINE é 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 do navegador da web do Visual Studio, use esse código:

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

propriedades globais

permite que vocêMSBuild 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 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 de Properties de tarefas do MSBuild.Para obter mais informações, consulte Tarefa do MSBuild.

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

Propriedade roles

Em o .NET Framework versão 4, você pode usar funções de propriedade para avaliar os scripts 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 várias classes do sistema.Por exemplo, você pode definir uma propriedade de compilação para 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 propriedade.

criando propriedades durante a execução

Elementos posicionados externos propriedades de Target são atribuídos valores durante a fase de avaliação de uma construção.durante a fase de execução subseqüente, 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 XML em properties

Propriedades podem conter XML arbitrário, que podem ajudar em passar valores às tarefas em ou 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 da 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, em esse exemplo, $(MySupportedVersion), $(MyRequiredVersion), e $(MySafeMode) 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: criar os mesmos arquivos de origem com diversas opções

Referência

MSBuild reservado propriedades

Elemento de propriedade (MSBuild)

Outros recursos

Conceitos do MSBuild

MSBuild