Sdílet prostřednictvím


Vlastnosti nástroje MSBuild

Vlastnosti jsou páry název a hodnota, které lze použít ke konfiguraci sestavení.Vlastnosti jsou užitečné pro předávání hodnot úkolům, vyhodnocování podmínek a uložení hodnot, které budou odkazovány v celém souboru projektu.

Definování a odkazování vlastností v souboru projektu

Vlastnosti jsou deklarovány vytvořením prvku, který má název vlastnosti jako podřízený prvek PropertyGroup.Například následující XML kód vytvoří vlastnost s názvem BuildDir, která má hodnotu Build.

<PropertyGroup>
    <BuildDir>Build</BuildDir>
</PropertyGroup>

V celém souboru projektu jsou vlastnosti odkazovány pomocí syntaxe $(PropertyName).Například vlastnost z předchozího příkladu se odkazuje pomocí $(BuildDir).

Hodnoty vlastnosti lze změnit předefinováním vlastnosti.Vlastnost BuildDir může dostat novou hodnotu pomocí toto XML kódu:

<PropertyGroup>
    <BuildDir>Alternate</BuildDir>
</PropertyGroup>

Vlastnosti jsou vyhodnocovány v pořadí, v jakém jsou uvedeny v souboru projektu.Novou hodnotu pro BuildDir je třeba deklarovat poté, co je původní hodnota přiřazena.

Rezervované vlastnosti

Nástroj MSBuild si vyhrazuje některé názvy vlastností pro uložení informací o souboru projektu a binárních souborech MSBuild.Tyto vlastnosti jsou odkazovány pomocí zápisu $, stejně jako jakékoli jiné vlastnosti.Například $(MSBuildProjectFile) vrátí celý název souboru projektu, včetně přípony názvu souboru.

Další informace naleznete v tématu Postupy: Odkazování na název nebo umístění souboru projektu a Vyhrazené a známé vlastnosti nástroje MSBuild.

Vlastnosti prostředí

V souborech projektu je možné odkazovat proměnné prostředí stejně jako rezervované vlastnosti.Například pro použití proměnné prostředí PATH v souboru projektu je třeba použít příkaz ${Path}.Obsahuje-li projekt definici vlastnosti stejného jména jako vlastnost prostředí, je vlastnost v projektu upřednostněna před proměnnou prostředí.

Každý projekt MSBuild má blok izolovaného prostředí, a tedy vidí, čte a zapisuje pouze do svého vlastního bloku. MSBuild načítá proměnné prostředí pouze při inicializaci kolekce vlastností a předtím, než je soubor projektu vyhodnocen nebo sestaven.Poté jsou vlastnosti prostředí statické, a tedy každý vytvořený nástroj je spuštěn se stejnými názvy a hodnotami.

Pro získání aktuální hodnoty proměnné prostředí v rámci spuštěného nástroje je třeba použít Funkce vlastností System.Environment.GetEnvironmentVariable.Upřednostňovanou metodou je však použití parametru úlohy EnvironmentVariables.Vlastnosti prostředí nastavené v tomto poli řetězců mohou být předány spuštěnému nástroji bez ovlivnění systémových proměnných prostředí.

Tip

Ne všechny proměnné prostředí jsou čteny pro potřeby počátečních vlastností.Proměnná prostředí, jejíž název není platný název vlastnosti MSBuild, jako například "386", je ignorována.

Další informace naleznete v tématu Postupy: Použití proměnných prostředí v sestavení.

Vlastnosti registru

Je možné číst hodnoty systémového registru pomocí následující syntaxe, kde Hive je podregistr registru (například HKEY_LOCAL_MACHINE), Key je název klíče, SubKey je název podklíče a Value je hodnota v podklíči.

$(registry:Hive\MyKey\MySubKey@Value)

Pro získání výchozí hodnoty podklíče je třeba vynechat Value.

$(registry:Hive\MyKey\MySubKey)

Tato hodnota registru může sloužit k inicializaci vlastnosti sestavení.Například pro vytvoření vlastnosti sestavení, která reprezentuje domovskou stránku webového prohlížeče aplikace Visual Studio, je třeba použít tento kód:

<PropertyGroup>
  <VisualStudioWebBrowserHomePage>
    $(registry:HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\WebBrowser@HomePage)
  </VisualStudioWebBrowserHomePage>
<PropertyGroup>

Globální vlastnosti

MSBuild umožňuje nastavit vlastnosti v příkazovém řádku pomocí přepínače /property (nebo /p).Tyto hodnoty globálních vlastností přepisují hodnoty vlastností, které jsou nastaveny v souboru projektu.To zahrnuje vlastnosti prostředí, ale nezahrnuje rezervované vlastnosti, které nelze změnit.

Následující příklad nastavuje globální vlastnost Configuration na DEBUG.

msbuild.exe MyProj.proj /p:Configuration=DEBUG

Globální vlastnosti je také možné nastavit nebo upravit pro podřízené projekty v sestaveních s více projekty pomocí atributu Properties úlohy MSBuild.Další informace naleznete v tématu MSBuild – úloha.

Při určení vlastnosti pomocí atributu TreatAsLocalProperty ve značce projektu, hodnota globální vlastnosti nepřepíše hodnotu vlastnosti, která je nastavena v souboru projektu.Další informace naleznete v tématu Project – element (MSBuild) a Postupy: Sestavení stejných zdrojových souborů s různými možnostmi.

Funkce vlastností

Počínaje rozhraním .NET Framework verze 4 je možné použít funkce vlastností pro vyhodnocení skriptů nástroje MSBuild.Ve skriptu sestavení je možné přečíst systémový čas, porovnat řetězce, porovnat regulární výrazy a provádět mnoho dalších akcí bez použití úkolů MSBuild.

Je možné použít metody řetězců (instance) na jakoukoli hodnotu vlastnosti a je možné volat statické metody mnoha systémových tříd.Například je takto možné nastavit vlastnost sestavení na dnešní datum.

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

Další informace a seznam funkcí vlastností naleznete v tématu Funkce vlastností.

Vytváření vlastností za běhu

Vlastnostem umístěným mimo prvky Target jsou přiřazeny hodnoty během fáze vyhodnocení sestavení.Během následující fáze vykonávání mohou být vlastnosti vytvořeny nebo upraveny následujícím způsobem:

  • Vlastnost může být generována libovolným úkolem.K vygenerování vlastnosti musí mít prvek Task podřízený prvek Output, který má atribut PropertyName.

  • Vlastnost může být vygenerována úkolem CreateProperty.Toto způsob využití je zastaralý.

  • Počínaje rozhraním .NET Framework 3.5 mohou prvky Target obsahovat prvky PropertyGroup, které mohou obsahovat deklarace vlastností.

Uložení XML ve vlastnostech

Vlastnosti mohou obsahovat libovolný XML kód, který může pomoci při předávání hodnot úkolům nebo zobrazení informací o protokolování.Následující příklad ukazuje vlastnost ConfigTemplate, která má hodnotu obsahující XML kód a dalších odkazy na vlastnosti.MSBuild nahrazuje odkazy na vlastnosti hodnotami odpovídajících vlastností.Hodnoty vlastností jsou přiřazeny v pořadí, v jakém jsou uvedeny.Proto by v tomto příkladu již měly být $(MySupportedVersion), $(MyRequiredVersion) a $(MySafeMode) definovány.

<PropertyGroup>
    <ConfigTemplate>
        <Configuration>
            <Startup>
                <SupportedRuntime
                    ImageVersion="$(MySupportedVersion)"
                    Version="$(MySupportedVersion)"/>
                <RequiredRuntime
                    ImageVersion="$(MyRequiredVersion)
                    Version="$(MyRequiredVersion)"
                    SafeMode="$(MySafeMode)"/>
            </Startup>
        </Configuration>
    </ConfigTemplate>
</PropertyGroup>

Viz také

Úkoly

Postupy: Použití proměnných prostředí v sestavení

Postupy: Odkazování na název nebo umístění souboru projektu

Postupy: Sestavení stejných zdrojových souborů s různými možnostmi

Referenční dokumentace

Vyhrazené a známé vlastnosti nástroje MSBuild

Property – element (MSBuild)

Další zdroje

Koncepty nástroje MSBuild

MSBuild