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