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
Funçõ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))
Funçõ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
Chamando 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>
Propriedade 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
-->