Funções de propriedade

Em as versões 4 e 4,5 do.NET Framework, as funções de propriedade podem ser usadas para avaliar script MSBuild.Funções de propriedade podem ser usadas em qualquer lugar que as propriedades aparecem.A o contrário das tarefas, as funções de propriedade podem ser usadas fora de alvos, e são avaliadas antes que qualquer destino é executado.

Sem usar tarefas do MSBuild, você pode ler a hora do sistema, comparar cadeias de caracteres, coincidir com expressões regulares, e realizar outras ações em seu script de compilação.MSBuild tentará converter a cadeia de caracteres para milhares para milhares e a, e fazer outras conversões conforme necessário.

Neste tópico:

  • Sintaxe de propriedade role

    • Funções de propriedade de cadeia de caracteres

    • Funções da propriedade estática

    • Chamando métodos de instância em propriedades estáticas

    • Propriedade roles MSBuild

  • Funções de propriedades aninhadas

  • MSBuild DoesTaskHostExist

  • MSBuild GetDirectoryNameOfFileAbove

  • MSBuild GetRegistryValue

  • MSBuild GetRegistryValueFromView

  • MSBuild MakeRelative

  • MSBuild ValueOrDefault

Sintaxe de propriedade role

Esses são três tipos de funções de propriedade; cada função tem uma sintaxe diferente:

  • Funções de propriedade (instância)

  • Funções da propriedade estática

  • Propriedade roles MSBuild

Dd633440.collapse_all(pt-br,VS.110).gifFunções de propriedade de cadeia de caracteres

Todos os valores de propriedade de compilação são apenas valores de cadeia de caracteres.Você pode usar métodos de cadeia de caracteres (instância) para operar em qualquer valor de propriedade.Por exemplo, você pode extrair o nome da unidade (os três primeiros caracteres) de uma propriedade de compilação que representa um caminho completo usando esse código:

$(ProjectOutputFolder.Substring(0,3))

Dd633440.collapse_all(pt-br,VS.110).gifFunções da propriedade estática

Em o script de compilação, você pode acessar as propriedades estáticas e métodos de muitas classes do sistema.Para obter o valor de uma propriedade estática, use a seguinte sintaxe Classe , onde é o nome da classe do sistema e Propriedade é o nome da propriedade.

$([Class]::Property)

Por exemplo, você pode usar o seguinte código para definir uma propriedade de compilação para a data e hora atuais.

<Today>$([System.DateTime]::Now)</Today>

Para chamar um método estático, use a seguinte sintaxe Classe , onde é o nome da classe do sistema, Método é o nome do método, e (Parâmetros) é a lista de parâmetro para o método:

$([Class]::Member(Parameters))

Por exemplo, para definir uma propriedade de compilação a nova GUID, você pode usar esse script:

<NewGuid>$([System.Guid]::NewGuid())</NewGuid>

Em funções de propriedade estática, você pode usar qualquer método ou propriedade estática de essas classes do sistema:

  • System.Byte

  • System.Char

  • System.Convert

  • System.DateTime

  • System.Decimal

  • System.Double

  • System.Enum

  • System.Guid

  • System.Int16

  • System.Int32

  • System.Int64

  • System.IO.Path

  • System.Math

  • System.UInt16

  • System.UInt32

  • System.UInt64

  • System.SByte

  • System.Single

  • System.String

  • System.StringComparer

  • System.TimeSpan

  • System.Text.RegularExpressions.Regex

  • Microsoft.Build.Utilities.ToolLocationHelper

Além de isso, você pode usar os seguintes métodos e propriedades estáticas:

  • System.Environment::CommandLine

  • System.Environment::ExpandEnvironmentVariables

  • System.Environment::GetEnvironmentVariable

  • System.Environment::GetEnvironmentVariables

  • System.Environment::GetFolderPath

  • System.Environment::GetLogicalDrives

  • System.IO.Directory::GetDirectories

  • System.IO.Directory::GetFiles

  • System.IO.Directory::GetLastAccessTime

  • System.IO.Directory::GetLastWriteTime

  • System.IO.Directory::GetParent

  • System.IO.File::Exists

  • System.IO.File::GetCreationTime

  • System.IO.File::GetAttributes

  • System.IO.File::GetLastAccessTime

  • System.IO.File::GetLastWriteTime

  • System.IO.File::ReadAllText

Dd633440.collapse_all(pt-br,VS.110).gifChamando métodos de instância em propriedades estáticas

Se você acessa uma propriedade estática que retorna uma instância do objeto, você pode chamar os métodos da instância do objeto.Para chamar um método de instância, use a seguinte sintaxe Classe , onde é o nome da classe do sistema, Propriedade é o nome da propriedadeMétodo, é o nome do método, e (Parâmetros) é a lista de parâmetro para o método:

$([Class]:: Property.Method(Parameters))

O nome da classe deve ser totalmente qualificado com o namespace.

Por exemplo, você pode usar o seguinte código para definir hoje uma propriedade de compilação para a data atual.

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

Dd633440.collapse_all(pt-br,VS.110).gifPropriedade roles MSBuild

Vários métodos estáticos na sua compilação podem ser acessados para fornecer suporte, aritmética bit a bit de lógica, e o caractere de escape.Você acessa estes métodos usando a seguinte sintaxe Método , onde é o nome do método e Parâmetros é a lista de parâmetro para o método.

$([MSBuild]::Method(Parameters))

Por exemplo, para adicionar juntos duas propriedades que têm valores numéricos, use o código a seguir.

$([MSBuild]::Add($(NumberOne), $(NumberTwo))

Aqui está uma lista de funções da propriedade do MSBuild:

Assinatura de função

Descrição

o dobro adiciona duplo (a, b dupla)

Adicione dois dobros.

adicione long (longa a, b) longo

Adicione dois longs.

o dobro subtrai duplo (a, b dupla)

Subtrair dois dobros.

subtrair long (longa a, b) longo

Subtrair dois longs.

o tipo double (vezes na, b dupla)

Multiplica dois dobros.

multiplica long (longa a, b) longo

Multiplica dois longs.

dobre a partilha duplo (a, b dupla)

Dividir dois dobros.

partilha longa (longa a, b) longo

a partilha dois longs.

Modulo duplo (duplo a, b dupla)

Modulo dois dobros.

Modulo longo (longa a, b) longo

o Modulo dois longs.

escape de cadeia de caracteres (cadeia de caracteres de escape)

Saia da cadeia de caracteres de acordo com as regras de escape do MSBuild.

cadeia Unescape (a cadeia de caracteres evadida)

Unescape a cadeia de caracteres de acordo com as regras de escape do MSBuild.

int BitwiseOr primeiro (int, int segundo)

Executar OR bit a bit no primeiro e segundo (no primeiro | segundo).

int BitwiseAnd primeiro (int, int segundo)

Executar AND bit a bit no primeiro e segundo (no primeiro e segundo).

int BitwiseXor primeiro (int, int segundo)

Executar XOR bit a bit no primeiro e segundo no primeiro (^ segundo).

int BitwiseNot (int primeiro)

executar NOT bit a bit (~first).

Funções de propriedades aninhadas

Você pode combinar funções de propriedade para formar funções mais complexas, como mostra o exemplo a seguir.

$([MSBuild]::BitwiseAnd(32,   $([System.IO.File]::GetAttributes(tempFile))))

Este exemplo retorna o valor de bits de FileAttributesArchive (32 ou 0) do arquivo determinado pelo caminho tempFile.Observe que os valores enumerados de dados não podem aparecer por nome nas funções da propriedade.O valor numérico (32) deve ser usado em vez de isso.

Os metadados também podem aparecer em funções aninhadas da propriedade.Para obter mais informações, consulte Processamento em lotes do MSBuild.

MSBuild DoesTaskHostExist

A função da propriedade de DoesTaskHostExist em MSBuild retorna se um host de tarefa é instalado atualmente para os valores especificados em tempo de execução e arquitetura.

Essa função da propriedade possui a seguinte sintaxe:

$[MSBuild]::DoesTaskHostExist(string theRuntime, string theArchitecture)

MSBuild GetDirectoryNameOfFileAbove

A função da propriedade do MSBuild GetDirectoryNameOfFileAbove procura por um arquivo nas pastas no diretório atual no caminho.

Essa função da propriedade possui a seguinte sintaxe:

$[MSBuild]::GetDirectoryNameOfFileAbove(string ThePath, string TheFile)

O código a seguir é um exemplo de essa sintaxe.

<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), EnlistmentInfo.props))\EnlistmentInfo.props" Condition=" '$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), EnlistmentInfo.props))' != '' " />

MSBuild GetRegistryValue

A função da propriedade do MSBuild GetRegistryValue retorna o valor de uma chave do Registro.Essa função usa dois argumentos, o nome da chave e o nome do valor, e retorna o valor do Registro.Se você não especificar um nome de valor, o valor padrão será retornado.

Os exemplos a seguir mostram como essa função é usada:

$([MSBuild]::GetRegistryValue(`HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Debugger`, ``))                                  // default value
$([MSBuild]::GetRegistryValue(`HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Debugger`, `SymbolCacheDir`))
$([MSBuild]::GetRegistryValue(`HKEY_LOCAL_MACHINE\SOFTWARE\(SampleName)`, `(SampleValue)`))             // parens in name and value

MSBuild GetRegistryValueFromView

A função da propriedade do MSBuild GetRegistryValueFromView obtém os dados de Registro do sistema dados a chave do Registro, o valor, e os um ou vários modos agrupada do Registro.A chave e o valor são pesquisados no modo de cada Registro em ordem até que seja encontrada.

A sintaxe para essa função da propriedade é:

[] ::GetRegistryValueFromView MSBuild (o keyName de cadeia de caracteres, valueName de cadeia de caracteres, valor padrão do objeto, params objetos []) modos de exibição

O sistema operacional de 64 bits do windows mantém uma chave do Registro de HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node que apresenta uma exibição do Registro de HKEY_LOCAL_MACHINE\SOFTWARE para aplicativos de 32 bits.

Por padrão, uma execução de 32 bits do aplicativo em WOW64 acessa o modo de 32 bits do Registro e um aplicativo de 64 bits acessa o modo de 64 bits do Registro.

As seguintes modos de exibição do Registro estão disponíveis:

Exibição do Registro

Definição

RegistryView.Registry32

O modo de 32 bits do Registro do aplicativo.

RegistryView.Registry64

O modo de 64 bits do Registro do aplicativo.

RegistryView.Default

A exibição do Registro que corresponde ao processo que o aplicativo está sendo executado.

A seguir temos um exemplo.

$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v3.0\ReferenceAssemblies', 'SLRuntimeInstallPath', null, RegistryView.Registry64, RegistryView.Registry32))

obtém os dados de SLRuntimeInstallPath de chave de ReferenceAssemblies, procurando pela primeira vez no modo de 64 bits do Registro e em seguida no modo de 32 bits do Registro.

MSBuild MakeRelative

A função da propriedade do MSBuild MakeRelative retorna o caminho relativo do segundo caminho relativo para o primeiro caminho.Cada caminho pode ser um arquivo ou pasta.

Essa função da propriedade possui a seguinte sintaxe:

$[MSBuild]::MakeRelative($(FileOrFolderPath1), $(FileOrFolderPath2))

O código a seguir é um exemplo de essa sintaxe.

<PropertyGroup>
    <Path1>c:\users\</Path1>
    <Path2>c:\users\username\</Path2>
</PropertyGroup>

<Target Name = "Go">
    <Message Text ="$([MSBuild]::MakeRelative($(Path1), $(Path2)))" />
    <Message Text ="$([MSBuild]::MakeRelative($(Path2), $(Path1)))" />
</Target>

<!--
Output:
   username\
   ..\
-->

MSBuild ValueOrDefault

A função da propriedade do MSBuild ValueOrDefault retorna o primeiro argumento, a menos que seja zero ou esvaziar.Se o primeiro argumento é zero ou vazio, a função retorna o segundo argumento.

O exemplo a seguir mostra como essa função é usada.

<Project ToolsVersion="4.0" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <PropertyGroup>
        <Value1>$([MSBuild]::ValueOrDefault(`$(UndefinedValue)`, `a`))</Value1>
        <Value2>$([MSBuild]::ValueOrDefault(`b`, `$(Value1)`))</Value2>
    </PropertyGroup>

    <Target Name="MyTarget">
        <Message Text="Value1 = $(Value1)" />
        <Message Text="Value2 = $(Value2)" />
    </Target>
</Project>

<!--
Output: 
  Value1 = a
  Value2 = b
-->

Consulte também

Conceitos

Propriedades do MSBuild

Outros recursos

MSBuild