Funkcje właściwości
W wersjach.NET Framework, 4 i 4,5 właściwość funkcje można do oceny skrypty programu MSBuild.Właściwość funkcje mogą być używane, wszędzie tam, gdzie są wyświetlane właściwości.W przeciwieństwie do zadań właściwości funkcji mogą być używane poza cele i są oceniane przed uruchomieniem wszelkich docelowej.
Bez użycia programu MSBuild zadań, można odczytać czasu systemowego, porównywania ciągów znaków, dopasowanie wyrażeń regularnych i wykonywania innych akcji w skrypcie kompilacji.Program MSBuild spróbuje przekonwertować ciąg na liczbę i liczby na ciąg i dokonać konwersji, inne wymagane.
W tym temacie:
Składnia funkcji właściwość
Ciąg właściwość funkcji
Funkcje właściwości statyczne
Wywołanie metody instancji na właściwości statyczne
Funkcje programu MSBuild właściwości
Funkcje zagnieżdżone właściwość
Program MSBuild DoesTaskHostExist
Program MSBuild GetDirectoryNameOfFileAbove
Program MSBuild GetRegistryValue
Program MSBuild GetRegistryValueFromView
Program MSBuild MakeRelative
Program MSBuild ValueOrDefault
Składnia funkcji właściwość
Są trzy rodzaje właściwości funkcji; Każda funkcja ma inną składnię:
Funkcje właściwość ciągu (wystąpienia)
Funkcje właściwości statyczne
Funkcje programu MSBuild właściwości
Ciąg właściwość funkcji
Wszystkie wartości właściwości kompilacji są tylko wartości string.Działać na wszystkie wartości właściwości, można użyć metody ciąg (wystąpienia).Na przykład można wyodrębnić nazwę (pierwsze trzy znaki) z właściwość kompilacji, która reprezentuje pełną ścieżkę za pomocą tego kodu:
$(ProjectOutputFolder.Substring(0,3))
Funkcje właściwości statyczne
W skrypcie kompilacji można uzyskać dostęp, statyczne właściwości i metody klas systemowych wiele.Aby uzyskać wartość właściwości statycznych, należy użyć następującej składni, gdzie klasy jest nazwa klasy systemu i Właściwość jest nazwą właściwości.
$([Class]::Property)
Na przykład następujący kod można użyć, aby ustawić właściwość kompilacji do bieżącej daty i godziny.
<Today>$([System.DateTime]::Now)</Today>
Wywołanie metody statycznej, należy użyć następującej składni, gdzie klasy jest nazwa klasy systemu Metoda jest nazwą metody, i (parametry) jest lista parametrów dla metody:
$([Class]::Member(Parameters))
Na przykład aby ustawić właściwość kompilacji nowego identyfikatora GUID, można użyć ten skrypt:
<NewGuid>$([System.Guid]::NewGuid())</NewGuid>
W 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
Format System.DateTime
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
Obiekt 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łanie metody instancji na właściwości statyczne
Jeśli dostęp do właściwości statycznej, która zwraca wystąpienie obiektu, można wywołać metody instancji tego obiektu.Wywołaj metodę instancji, należy użyć następującej składni, gdzie klasy jest nazwa klasy systemu Właściwość jest nazwą właściwości, metoda jest nazwa metody, i (parametry) jest lista parametrów dla metody:
$([Class]:: Property.Method(Parameters))
Nazwa klasy musi być w pełni kwalifikowana z obszaru nazw.
Na przykład można użyć następującego kodu ustawić właściwość build dzisiaj data bieżąca.
<Today>$([System.DateTime]::Now.ToString("yyyy.MM.dd"))</Today>
Funkcje programu MSBuild właściwości
Zapewnienie arytmetyczny, bitowy możliwy jest kilka metod statycznych w budowania logicznych i obsługa znaków escape.Dostęp do tych metod przy użyciu następującej składni, gdzie Metoda jest nazwą metody i Parametry jest lista parametrów metody.
$([MSBuild]::Method(Parameters))
Na przykład dodać razem dwie właściwości, które mają wartości liczbowe, należy użyć następującego kodu.
$([MSBuild]::Add($(NumberOne), $(NumberTwo))
Oto lista funkcji programu MSBuild właściwość:
Funkcja podpis |
Opis |
---|---|
Dodać podwójne (podwójne, podwójne b) |
Dodać dwie podwaja. |
Dodać długo (długie, długie b) |
Dodać dwie długie. |
podwójne odjąć (podwójne, podwójne b) |
Odejmowanie dwóch podwaja. |
długo odjąć (długie, długie b) |
Odejmowanie dwóch wyroby długie. |
podwójne pomnożyć (podwójne, podwójne b) |
Pomnożyć dwa podwaja. |
długo mnożyć (długo, długo b) |
Pomnożyć dwa długie. |
Podzielić podwójne (podwójne, podwójne b) |
Podzielić dwa podwaja. |
Długie dzielenie (długo, długo b) |
Podzielić dwa długie. |
podwójne Modulo (podwójne, podwójne b) |
Modulo dwa podwaja. |
długo Modulo (długo, długo b) |
Modulo dwa długie. |
ciąg Escape(string unescaped) |
Escape ciąg zgodnie z regułami ucieczki MSBuild. |
String, Unescape (string wyjściowym) |
Unescape ciąg znaków zgodnie z regułami ucieczki MSBuild. |
int BitwiseOr (int first, int second) |
Wykonać bitowe OR na pierwszy i drugi (pierwszy | drugi). |
int BitwiseAnd (int first, int second) |
Wykonać bitowe AND na pierwszy i drugi (pierwszy & Po drugie). |
int BitwiseXor (int first, int second) |
Wykonać bitowe XOR na pierwszy i drugi (pierwszy ^ drugi). |
int BitwiseNot(int first) |
Wykonać bitowe NOT (~ pierwszy). |
Funkcje zagnieżdżone właściwość
Można połączyć funkcje właściwości do postaci bardziej złożone funkcje, jak pokazano w następującym przykładzie.
$([MSBuild]::BitwiseAnd(32, $([System.IO.File]::GetAttributes(tempFile))))
W tym przykładzie zwraca wartość FileAttributesArchive bit (32 lub 0), biorąc pod uwagę przez ścieżkę pliku tempFile. Należy zauważyć, że wartości danych wyliczanych nie pojawiają się nazwy w funkcji właściwość.Wartość liczbowa (32) muszą być używane zamiast.
Metadane mogą być również wyświetlane właściwości zagnieżdżonych funkcji.Aby uzyskać więcej informacji, zobacz Program MSBuild tworzenie pakietów wsadowych..
Program MSBuild DoesTaskHostExist
DoesTaskHostExist Funkcja właściwość w MSBuild zwraca, czy host zadanie jest aktualnie zainstalowane dla określonych wartości runtime i architektury.
Funkcja ta właściwość ma następującą składnię:
$[MSBuild]::DoesTaskHostExist(string theRuntime, string theArchitecture)
Program MSBuild GetDirectoryNameOfFileAbove
Program MSBuild GetDirectoryNameOfFileAbove właściwość Funkcja szuka plików w katalogach o bieżącego katalogu w ścieżce.
Funkcja ta właściwość ma następującą składnię:
$[MSBuild]::GetDirectoryNameOfFileAbove(string ThePath, string TheFile)
Poniższy kod jest przykładem tej składni.
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), EnlistmentInfo.props))\EnlistmentInfo.props" Condition=" '$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), EnlistmentInfo.props))' != '' " />
Program MSBuild GetRegistryValue
Program MSBuild GetRegistryValue właściwość, funkcja zwraca wartość klucza rejestru.Ta funkcja wymaga dwóch argumentów, nazwy klucza i nazwa wartości i zwraca wartość z rejestru.Jeśli nie określono nazwy 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
Program MSBuild GetRegistryValueFromView
Program MSBuild GetRegistryValueFromView właściwość funkcja pobiera dane rejestru systemu podany klucz rejestru, wartość i jeden lub więcej sortowane widoki rejestru.Klucz i wartość są przeszukiwane w każdym widoku rejestru w celu, dopóki nie zostaną one znalezione.
Składnia funkcji ta właściwość jest:
[MSBuild]:: GetRegistryValueFromView (NazwaKlucza ciąg, ciąg valueName, defaultValue obiektu, params object [] widoki)
Windows 64-bitowy system operacyjny przechowuje HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node klucz rejestru, który przedstawia widok rejestru kluczu HKEY_LOCAL_MACHINE\SOFTWARE dla aplikacji 32-bitowych.
Domyślnie 32-bitowej aplikacji działającej w warstwie WOW64 uzyskuje dostęp do widoku 32-bitowego rejestru i aplikacji 64-bitowych uzyskuje dostęp do widoku rejestru w 64-bitowych.
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, który pasuje do procesu, że aplikacja jest uruchomiona na. |
Poniżej przedstawiono 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, patrząc z pierwszym zdaniem 64-bitowego rejestru, a następnie w widoku 32-bitowego rejestru.
Program MSBuild MakeRelative
Program MSBuild MakeRelative właściwość, funkcja zwraca ścieżkę względną ścieżkę drugiego pierwsza ścieżka.Każda ścieżka może być plik lub folder.
Funkcja ta właściwość ma następującą składnię:
$[MSBuild]::MakeRelative($(FileOrFolderPath1), $(FileOrFolderPath2))
Poniższy 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\
..\
-->
Program MSBuild ValueOrDefault
Program MSBuild ValueOrDefault właściwość, funkcja zwraca pierwszy argument, o ile nie jest zerowa lub pusta.Jeśli pierwszy argument jest zerowy lub pusty, funkcja zwraca drugi argument.
Poniższy przykład pokazuje, 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
-->