Udostępnij za pośrednictwem


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
-->

Zobacz też

Koncepcje

Właściwości programu MSBuild

Inne zasoby

MSBuild