Sdílet prostřednictvím


Funkce vlastností

Ve verzích rozhraní .NET Framework 4 a 4.5 funkce vlastnost lze použít k vyhodnocení MSBuild skriptů.Vlastnost funkce lze použít všude tam, kde jsou zobrazeny vlastnosti.Na rozdíl od úlohy funkce vlastnost lze použít mimo cílů a před spuštěním jakékoli cíl, jsou vyhodnoceny.

Bez použití úlohách MSBuild, můžete přečíst systémový čas, porovnání řetězců, přiřadit regulární výrazy a provést další akce ve skriptu sestavení.MSBuild se pokusí převést řetězec na číslo a číslo na řetězec a proveďte jiné převody podle potřeby.

V tomto tématu:

  • Syntaxe funkce vlastnost

    • Funkce pro vlastnost řetězce

    • Statické vlastnosti funkce

    • Voláním metody Instance na statické vlastnosti

    • Funkce MSBuild vlastností

  • Vlastnost vnořené funkce

  • MSBuild DoesTaskHostExist

  • MSBuild GetDirectoryNameOfFileAbove

  • MSBuild GetRegistryValue

  • MSBuild GetRegistryValueFromView

  • MSBuild MakeRelative

  • MSBuild ValueOrDefault

Syntaxe funkce vlastnost

Jsou tři typy funkcí vlastnost; Každá funkce má jinou syntaxi:

  • Funkce pro vlastnost řetězce (instance)

  • Statické vlastnosti funkce

  • Funkce MSBuild vlastností

Funkce pro vlastnost řetězce

Všechny hodnoty vlastností sestavení jsou pouze hodnoty řetězců.Metody řetězců (instance) můžete pracovat na jakoukoli hodnotu vlastnosti.Název jednotky (první tři znaky) můžete například extrahovat z vlastnosti sestavení, který představuje úplnou cestu s využitím tento kód:

$(ProjectOutputFolder.Substring(0,3))

Statické vlastnosti funkce

Ve skriptu sestavení získat přístup k statické vlastnosti a metody mnoho tříd systému.Chcete-li získat hodnotu statickou vlastnost, pomocí následující syntaxe, kde třídy je název třídy systému a vlastnost je název vlastnosti.

$([Class]::Property)

Můžete například následující kód pro nastavení vlastnosti sestavení na aktuální datum a čas.

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

Volání statické metody, použijte následující syntaxe, kde třídy je název třídy systému, metody je název metody, a (parametry) je seznam parametrů metody:

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

Můžete například nastavit vlastnost sestavení na nový identifikátor GUID, můžete tento skript:

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

V funkce statické vlastnosti, které lze použít všechny statické metody nebo vlastnosti z těchto tříd systému:

  • System.Byte

  • System.Char

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

Kromě toho můžete provádět následující statické metody a vlastnosti:

  • 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

Voláním metody Instance na statické vlastnosti

Je-li získat přístup k statickou vlastnost, která vrátí instanci objektu, můžete vyvolat metody instanci tohoto objektu.Chcete-li volat metodu instance, použijte následující syntaxi kde třídy je název třídy systému, vlastnost je název vlastnosti, metody je název metody, a (parametry) je seznam parametrů metody:

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

Název třídy musí být plně kvalifikovaný s oborem názvů.

Můžete například následující kód pro nastavení vlastnosti sestavení na aktuální datum ještě dnes.

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

Funkce MSBuild vlastností

Několik statických metod v sestavení lze přistupovat k poskytování aritmetický bitová logické a podporu řídicí znak.Získat přístup k těchto metod pomocí následující syntaxe, kde metody je název metody a Parametry je seznam parametrů metody.

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

Můžete například přidat společně dvě vlastnosti, které mají číselné hodnoty, použijte následující kód.

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

Následuje seznam funkcí vlastnosti MSBuild:

Funkce podpisu

Popis

Dvojitá přidat (dvojitá, double b)

Přidáte dvě Double.

dlouhé přidáte (dlouho, dlouhé b)

Přidejte dva dlouhé.

Dvojitá odečíst (dvojitá, double b)

Od odečítáte dvě Double.

dlouhé odečítáte (dlouho, dlouhé b)

Od odečítáte dvě dlouhé.

Dvojitá násobíte (dvojitá, double b)

Násobení dvou Double.

dlouhé násobíte (dlouho, long b)

Násobení dvou dlouhé.

Dvojitá Deleni (dvojitá, double b)

Rozdělte dva Double.

Dlouhé dělení (dlouho, long b)

Rozdělte dva dlouhé.

dvojité Modulo (dvojitá, double b)

Modulo dvě Double.

dlouhé Modulo (dlouho, long b)

Modulo dvě dlouhé.

řetězec Escape(string unescaped)

Řídicí řetězec podle pravidel útěku MSBuild.

řetězec Unescape (řetězec uvozena)

Unescape řetězec podle pravidel útěku MSBuild.

int BitwiseOr (int první, int sekundu)

Provést bitová OR na první a druhý (první | druhý).

int BitwiseAnd (int první, int sekundu)

Provést bitová AND na první a druhý (první a druhý).

int BitwiseXor (int první, int sekundu)

Provést bitová XOR na první a druhý (první ^ druhý).

int BitwiseNot(int first)

Provést bitová NOT (~ první).

Vlastnost vnořené funkce

Je možné kombinovat vlastnost funkcí, které mají formuláře složitější funkce, jako ukazuje následující příklad.

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

V tomto příkladu vrací hodnotu FileAttributesArchive bit (32 nebo 0) poskytnuté cesta k souboru tempFile.Všimněte si, že ve výčtu datových hodnot se nemůže vyskytovat podle názvu v rámci funkce vlastností.Číselná hodnota (32) musí být místo toho použít.

Metadata může také zobrazit vlastnosti vnořené funkce.Další informace naleznete v tématu Dávkování nástroje MSBuild.

MSBuild DoesTaskHostExist

DoesTaskHostExist Vlastnost funkci MSBuild vrátí, zda úloha hostitele nainstalovaný pro zadané hodnoty architektura a za běhu.

Tato vlastnost funkce má následující syntaxe:

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

MSBuild GetDirectoryNameOfFileAbove

MSBuild GetDirectoryNameOfFileAbove vlastnost funkce hledá soubor v adresářích nad aktuálního adresáře v cestě.

Tato vlastnost funkce má následující syntaxe:

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

Následující kód je příkladem této syntaxe.

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

MSBuild GetRegistryValue

MSBuild GetRegistryValue vlastnost funkce vrací hodnotu klíče registru.Tato funkce přebírá dva argumenty, název klíče a hodnoty, jejíž název a vrací hodnotu z registru.Pokud neurčíte název hodnoty, je vrácena výchozí hodnota.

Následující příklady ukazují, jak tato funkce se používá:

$([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 vlastnost funkce získá data registru systému zadaný klíč registru, hodnotu a jeden nebo více seřazené zobrazení registru.Klíče a hodnoty budou vyhledány v každém zobrazení registru v pořadí, dokud se nacházejí.

Syntaxe pro tuto vlastnost funkci je:

[MSBuild]:: GetRegistryValueFromView (Název_klíče řetězec, název hodnoty řetězce, objekt defaultValue, zobrazeních [] Parametry objektů)

Operační systém Windows 64-bit udržuje HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node klíč registru, který představuje zobrazení HKEY_LOCAL_MACHINE\SOFTWARE registru pro 32bitové aplikace.

Ve výchozím nastavení 32bitových aplikací, který běží na WOW64 přistupuje k zobrazení 32-bit registru a 64bitovou aplikaci přistupuje k zobrazení 64-bit registru.

K dispozici jsou následující zobrazení registru:

Zobrazení registru

Definice

RegistryView.Registry32

Zobrazení registru 32bitových aplikací.

RegistryView.Registry64

Zobrazení registru 64bitovou aplikaci.

RegistryView.Default

Zobrazení registru, které odpovídá procesu, který je aplikace spuštěna v.

Následuje příklad.

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

získá data SLRuntimeInstallPath ReferenceAssemblies klíče, vyhledávání první v registru 64bitové zobrazení a poté v zobrazení 32-bit registru.

MSBuild MakeRelative

MSBuild MakeRelative funkce vlastnost vrací relativní cestu druhý relativní cestu vzhledem k první cesta.Každá cesta může být soubor nebo složku.

Tato vlastnost funkce má následující syntaxe:

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

Následující kód je příkladem této syntaxe.

<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 vlastnost funkce vrací první argument, není-li hodnotu null nebo je prázdný.Pokud první argument má hodnotu null nebo je prázdný, vrátí druhý argument funkce.

Následující příklad ukazuje, jak je tuto funkci používat.

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

Viz také

Koncepty

Vlastnosti nástroje MSBuild

Další zdroje

MSBuild