Sdílet prostřednictvím


Vlastnost funkce

V rozhraní.NET Framework verze 4 a 4.5 vlastnosti funkcí lze vyhodnotit MSBuild skripty.Vlastnosti funkcí lze kdykoli zobrazit vlastnosti.Na rozdíl od úkolů vlastnost funkce lze použít mimo cíle a vyhodnoceny před spuštěním libovolné cílové.

Bez použití úlohy nástroje MSBuild, čtení, systémový čas, porovnání řetězců, odpovídající regulární výrazy a provádět další akce ve skriptu sestavení.MSBuild se pokusí převést řetězec na číslo a číslo na řetězec a provádět jiné převody podle potřeby.

V tomto tématu:

  • Syntaxe funkce vlastnost

    • Řetězcová vlastnost funkce

    • Statická vlastnost funkce

    • Volání metody Instance na statické vlastnosti

    • Funkce vlastností MSBuild

  • Funkce vnořená vlastnost

  • MSBuild DoesTaskHostExist

  • MSBuild GetDirectoryNameOfFileAbove

  • MSBuild GetRegistryValue

  • MSBuild GetRegistryValueFromView

  • MSBuild MakeRelative

  • MSBuild ValueOrDefault

Syntaxe funkce vlastnost

Jsou tři druhy vlastnost funkce; Každá funkce má jinou syntaxi:

  • Vlastnosti funkcí pro řetězce (instance)

  • Statická vlastnost funkce

  • Funkce vlastností MSBuild

Dd633440.collapse_all(cs-cz,VS.110).gifŘetězcová vlastnost funkce

Všechny hodnoty vlastností sestavení jsou pouze hodnoty řetězců.Pracovat na libovolnou hodnotu vlastnosti můžete použít metody řetězec (instance).Název jednotky (první tři znaky) můžete například extrahovat z vlastnosti sestavení, který představuje úplnou cestu pomocí tohoto kódu:

$(ProjectOutputFolder.Substring(0,3))

Dd633440.collapse_all(cs-cz,VS.110).gifStatická vlastnost funkce

Ve skriptu sestavení můžete přístup k statické vlastnosti a metody třídy mnoho systému.Získat hodnotu statické vlastnosti, použijte následující syntaxi, kde třídy je název třídy systému a vlastnost je název vlastnosti.

$([Class]::Property)

Například můžete použít následující kód k nastavení vlastnosti sestavení na aktuální datum a čas.

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

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

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

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

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

Statické vlastnosti funkcí můžete použít všechny statické metody nebo vlastnosti těchto tříd systému:

  • System.Byte

  • System.Char

  • System.Convert

  • Typ 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 použí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

Dd633440.collapse_all(cs-cz,VS.110).gifVolání metody Instance na statické vlastnosti

Pokud statickou vlastnost, která vrátí instanci objektu, můžete vyvolat metody instance objektu.Vyvolání metody instance, použijte následující syntaxi kde třídy je název třídy systému vlastnost je název vlastnosti, metoda je název metody, a (parametry) je v seznamu parametrů metody:

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

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

Například můžete použít následující kód k nastavení vlastnosti sestavení dnes aktuální datum.

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

Dd633440.collapse_all(cs-cz,VS.110).gifFunkce vlastností MSBuild

Několik statických metod v vaše sestavení lze přistupovat k aritmetický, bitový logické a podpora znaků escape.Tyto metody přístupu pomocí následující syntaxe kde Metoda je název metody a Parametry je v seznamu parametrů metody.

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

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

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

Zde je seznam funkcí, vlastností MSBuild:

Funkce podpis

Description

Přidání dvojité (double, double b)

Přidejte dva zdvojnásobí.

Přidáte dlouhá (dlouhé, dlouhé b)

Přidejte dva dlouhé.

dvojité odečte (double, double b)

Odečte dvě zdvojnásobí.

dlouhé odečte (dlouhé, dlouhé b)

Odečte dvě dlouhé.

dvojité násobení (double, double b)

Násobení dvou zdvojnásobí.

dlouhé násobení (dlouhé, dlouhé b)

Násobení dvou dlouhé.

dvojité rozdělte (double, double b)

Rozdělení dvou zdvojnásobí.

Dlouhé dělení (dlouhé, dlouhé b)

Rozdělte na dva dlouhé.

dvojité Modulo (double, double b)

Modulo dva zdvojnásobí.

dlouhé Modulo (dlouhé, dlouhé b)

Modulo dva dlouhé.

řetězec Escape(string unescaped)

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

řetězec (string uvozeny) Unescape

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

int BitwiseOr (první, int int druhé)

Provádět logické bitové OR na první a druhé (první | druhé).

int BitwiseAnd (první, int int druhé)

Provádět logické bitové AND na první a druhé (první & druhý).

int BitwiseXor (int první, int druhé)

Provádět logické bitové XOR na první a druhé (první ^ druhý).

int BitwiseNot(int first)

Provádět logické bitové NOT (~ první).

Funkce vnořená vlastnost

Můžete kombinovat funkce vlastností formuláře složitější funkce, jak ukazuje následující příklad.

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

Tento příklad vrátí hodnotu FileAttributesArchive bit (32 nebo 0) dána cesta souboru tempFile. Všimněte si hodnoty dat výčet nemůže být použit podle názvu v rámci funkce vlastností.Číselná hodnota (32) musí být použita místo.

Funkce vnořená vlastnost může také zobrazit metadata.Další informace naleznete v tématu Nástroj MSBuild dávkování.

MSBuild DoesTaskHostExist

DoesTaskHostExist Vrátí funkce vlastnost v MSBuild, zda úkol hostitele nainstalovaný runtime a architektura zadaných hodnot.

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

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

MSBuild GetDirectoryNameOfFileAbove

MSBuild GetDirectoryNameOfFileAbove vlastnost funkce vyhledá soubor do adresáře v cestě aktuální adresář.

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

$[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 vrátí hodnotu klíče registru.Tato funkce používá dva argumenty, název klíče a název hodnoty a vrátí hodnotu z registru.Pokud nezadáte název hodnoty, výchozí hodnota je vrácena.

Následující příklady ukazují způsob použití této funkce:

$([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 systému registru klíč registru, hodnota a jeden nebo více objednané zobrazení registru.Klíče a hodnoty jsou prohledány v každém zobrazení registru v pořadí, dokud se nacházejí.

Syntaxe funkce této vlastnosti je:

[MSBuild]:: GetRegistryValueFromView (Název_klíče řetězec, Název_hodnoty řetězec, objekt defaultValue, parametry objektu [] zobrazení)

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

Ve výchozím 32bitové aplikace spuštěné v WOW64 přistupuje zobrazení registru 32bitové a 64bitové aplikace přistupuje k zobrazení 64 bit registru.

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

Zobrazení registru

Definice

RegistryView.Registry32

Zobrazení registru 32bitové aplikace.

RegistryView.Registry64

Zobrazení registru 64bitové aplikace.

RegistryView.Default

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

Zde je 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, vypadající jako první v registru 64bitové zobrazení a v zobrazení 32 bit registru.

MSBuild MakeRelative

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

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

$[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, pokud je null nebo prázdný.Pokud první argument má hodnotu null nebo prázdný, vrátí funkce druhého argumentu.

Následující příklad ukazuje použití této funkce.

<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

Nástroj MSBuild vlastnosti

Další zdroje

MSBuild