Funkcje właściwości
W wersjach programu .NET Framework 4 i 4.5 funkcje właściwości może służyć do oceny skrypty MSBuild.Właściwość funkcje mogą być używane, ilekroć właściwości są wyświetlane.W odróżnieniu od zadania funkcje właściwości można używać poza celów i są oceniane przed uruchomieniem dowolnego docelowego.
Bez użycia zadania MSBuild, można odczytać czasu systemowego, porównywania ciągów, dopasowanie wyrażeń regularnych i wykonywania innych działań w skrypcie kompilacji.MSBuild spróbuje przekonwertować ciąg na numer i ciąg, a następnie wprowadź inne konwersje zgodnie z potrzebami.
W tym temacie:
Składnia funkcji właściwości
Funkcje właściwości ciągu
Właściwości statyczne funkcje
Wywołania metody wystąpienia właściwości statyczne
Funkcje właściwości MSBuild
Funkcje zagnieżdżone właściwości
MSBuild DoesTaskHostExist
MSBuild GetDirectoryNameOfFileAbove
MSBuild GetRegistryValue
MSBuild GetRegistryValueFromView
MSBuild MakeRelative
MSBuild ValueOrDefault
Składnia funkcji właściwości
Są trzy typy funkcji właściwości; każdą funkcję zawiera różne składni:
Funkcje właściwości ciągu (wystąpienia)
Właściwości statyczne funkcje
Funkcje właściwości MSBuild
Funkcje właściwości ciągu
Wszystkie wartości właściwości kompilacji są tylko wartości ciągu.Metody ciągu (wystąpienia) służy do wykonywania operacji wszystkie wartości właściwości.Na przykład można wyodrębnić nazwę dysku (pierwszych trzech znaków) z właściwością kompilacji, która reprezentuje pełną ścieżkę przy użyciu tego kodu:
$(ProjectOutputFolder.Substring(0,3))
Właściwości statyczne funkcje
W skrypcie kompilacji można uzyskać dostęp do statycznych właściwości i metody wiele klas systemowych.Podaje wartość właściwości statycznej, użyj następującej składni, gdzie klasy jest nazwa klasy systemu i właściwości jest nazwą właściwości.
$([Class]::Property)
Na przykład można użyć następującego kodu można ustawić właściwość kompilacji na bieżącą datę i godzinę.
<Today>$([System.DateTime]::Now)</Today>
Należy wywołać metodę statyczną, użyj następującej składni, gdzie klasy to nazwa klasy systemu metody to nazwa metody, i (parametry) jest na liście parametrów metody:
$([Class]::Method(Parameters))
Na przykład aby ustawić właściwość kompilacji nowego identyfikatora GUID, program ten skrypt:
<NewGuid>$([System.Guid]::NewGuid())</NewGuid>
W przypadku funkcji statycznej właściwości można użyć dowolnego statycznej metody lub właściwości tych klas systemowych:
System.Byte
System.Char
System.Convert
System.DateTime
System.Decimal
System.Double
Element 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
Ponadto można użyć następujących metod statycznych i właściwości:
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
Wywołania metody wystąpienia właściwości statyczne
Jeśli możesz uzyskać dostęp do właściwości statycznych, która zwraca wystąpienie obiektu, można wywołać metody wystąpienia tego obiektu.Wywołania metody wystąpienia, użyj następującej składni, gdzie klasy to nazwa klasy systemu właściwości jest nazwą właściwości, metody to nazwa metody, i (parametry) jest na liście parametrów metody:
$([Class]::Property.Method(Parameters))
Nazwa klasy musi być w pełni kwalifikowana z obszarem nazw.
Na przykład można użyć następujący kod można ustawić właściwość kompilacji już dziś na bieżącą datę.
<Today>$([System.DateTime]::Now.ToString("yyyy.MM.dd"))</Today>
Funkcje właściwości MSBuild
Kilka metod statycznych w kompilacji można uzyskać dostęp do świadczenia operacje arytmetyczne, bitowe logiczne i pomocy technicznej znakiem ucieczki.Dostęp do tych metod przy użyciu następującej składni, gdzie metody jest nazwą metody i Parametry jest na liście parametrów metody.
$([MSBuild]::Method(Parameters))
Na przykład aby dodać razem dwie właściwości, które mają wartości liczbowe, należy użyć następujący kod.
$([MSBuild]::Add($(NumberOne), $(NumberTwo))
Poniżej przedstawiono listę funkcji właściwość MSBuild:
Funkcja podpisu |
Opis |
---|---|
Dodaj podwójne (podwójna, liczba o podwójnej precyzji b) |
Dodaj dwa dubletów. |
Dodaj długo (długo, długie b) |
Dodaj dwa wyroby długie. |
Podwójna Odejmij (podwójna, liczba o podwójnej precyzji b) |
Odejmuje dwie dubletów. |
Odejmuje długo (długo, długie b) |
Odejmuje dwie wyroby długie. |
Podwójna masowo (podwójna, liczba o podwójnej precyzji b) |
Masowo dubletów dwóch. |
długo masowo (długo, długi b) |
Masowo dwóch wyroby długie. |
Podwójna Divide (podwójna, liczba o podwójnej precyzji b) |
Podziel dubletów dwóch. |
czas podzielić (długo, długi b) |
Podziel dwóch wyroby długie. |
podwójne Modulo (podwójna, liczba o podwójnej precyzji b) |
Modulo dwa dubletów. |
długo Modulo (długo, długi b) |
Modulo dwa wyroby długie. |
ciąg Escape(string unescaped) |
Wyjścia z ciągu zgodnie z regułami ucieczki MSBuild. |
ciąg Unescape (ciąg o znaczeniu zmienionym) |
Unescape ciąg zgodnie z regułami ucieczki MSBuild. |
int BitwiseOr (int, int pierwszy, sekundy) |
Wykonać bitowe OR na pierwszy i drugi (pierwszy | drugi). |
int BitwiseAnd (int, int pierwszy, sekundy) |
Wykonać bitowe AND na pierwszy i drugi (pierwszy i drugi). |
int BitwiseXor (int, int pierwszy, sekundy) |
Wykonać bitowe XOR na pierwszy i drugi (pierwszy ^ drugi). |
int BitwiseNot(int first) |
Wykonać bitowe NOT (~ pierwszy). |
Funkcje zagnieżdżone właściwości
Można połączyć funkcje właściwości do bardziej złożone działa, jak w poniższym przykładzie przedstawiono formularza.
$([MSBuild]::BitwiseAnd(32, $([System.IO.File]::GetAttributes(tempFile))))
W tym przykładzie zwraca wartość FileAttributesArchive bit (32 lub 0) podane przez ścieżkę pliku tempFile.Zwróć uwagę, że wartości wyliczeniowych danych nie może występować według nazwy w funkcjach właściwości.Zamiast tego należy użyć tej wartości liczbowej (32).
Metadane mogą być umieszczane funkcje zagnieżdżone właściwości.Aby uzyskać więcej informacji, zobacz Przetwarzanie wsadowe w programie MSBuild.
MSBuild DoesTaskHostExist
DoesTaskHostExist Funkcja właściwość w MSBuild zwraca, czy host zadanie jest aktualnie zainstalowane dla określonej wartości czasu wykonywania i architektury.
Funkcja ta właściwość ma następującej składni:
$[MSBuild]::DoesTaskHostExist(string theRuntime, string theArchitecture)
MSBuild GetDirectoryNameOfFileAbove
MSBuild GetDirectoryNameOfFileAbove Właściwości funkcji poszukuje pliku w katalogach powyżej bieżącego katalogu w ścieżce.
Funkcja ta właściwość ma następującej składni:
$[MSBuild]::GetDirectoryNameOfFileAbove(string ThePath, string TheFile)
Następujący kod jest przykładem tej składni.
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), EnlistmentInfo.props))\EnlistmentInfo.props" Condition=" '$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), EnlistmentInfo.props))' != '' " />
MSBuild GetRegistryValue
MSBuild GetRegistryValue Właściwości funkcja zwraca wartość klucza rejestru.Ta funkcja wymaga dwóch argumentów, nazwa klucza i nazwa wartości i zwraca wartość z rejestru.Jeśli nie zostanie określona nazwa wartości, zwracana jest wartość domyślna.
Poniższe przykłady pokazują, jak ta funkcja jest używana:
$([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
MSBuild GetRegistryValueFromView Właściwości funkcja pobiera dane rejestru systemu podany klucz rejestru, wartość oraz jeden lub więcej zamówionych widoki rejestru.Klucz i wartość są przeszukiwane w każdym widoku rejestru w kolejności, dopóki znajduje się.
Składnia funkcja ta właściwość jest:
[MSBuild]:: GetRegistryValueFromView (Nazwa ciągu klucza, Nazwa_wartości ciąg, defaultValue obiektu, parametry obiektu [] widoków)
Windows 64-bitowym systemie operacyjnym zachowuje HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node klucz rejestru, który przedstawia widok rejestru klucza HKEY_LOCAL_MACHINE\SOFTWARE aplikacji 32-bitowych.
Domyślnie 32-bitowej aplikacji uruchomionych na WOW64 uzyskuje dostęp do widoku 32-bitowego rejestru i aplikacji 64-bitowych uzyskuje dostęp do widoku 64-bitowego rejestru.
Dostępne są następujące widoki rejestru:
Widok rejestru |
Definicja |
---|---|
RegistryView.Registry32 |
Widok rejestru aplikacji 32-bitowych. |
RegistryView.Registry64 |
Widok rejestru aplikacji 64-bitowych. |
RegistryView.Default |
Widok rejestru w procesie aplikacja jest uruchomiona na zgodny. |
Oto przykład.
$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v3.0\ReferenceAssemblies', 'SLRuntimeInstallPath', null, RegistryView.Registry64, RegistryView.Registry32))
pobiera dane SLRuntimeInstallPath klucza ReferenceAssemblies, wyszukiwania pierwszy w widoku 64-bitowego rejestru, a następnie w widoku 32-bitowego rejestru.
MSBuild MakeRelative
MSBuild MakeRelative Właściwości funkcja zwraca ścieżkę względną drugi ścieżkę względem ścieżki pierwszy.Każda ścieżka może być pliku lub folderu.
Funkcja ta właściwość ma następującej składni:
$[MSBuild]::MakeRelative($(FileOrFolderPath1), $(FileOrFolderPath2))
Następujący kod jest przykładem tej składni.
<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
MSBuild ValueOrDefault funkcja właściwość zwraca pierwszy argument, chyba że jest zerowa lub pusta.Jeśli pierwszy argument ma wartość null lub jest pusta, funkcja zwróci drugi argument.
W poniższym przykładzie pokazano, jak ta funkcja jest używana.
<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
-->