Target – element (MSBuild)

Obsahuje sadu úloh, které má nástroj MSBuild spouštět postupně.

<Cíl projektu><>

Syntaxe

<Target Name="Target Name"
        Inputs="Inputs"
        Outputs="Outputs"
        Returns="Returns"
        KeepDuplicateOutputs="true/false"
        BeforeTargets="Targets"
        AfterTargets="Targets"
        DependsOnTargets="DependentTarget"
        Condition="'String A' == 'String B'"
        Label="Label">
    <Task>... </Task>
    <PropertyGroup>... </PropertyGroup>
    <ItemGroup>... </ItemGroup>
    <OnError... />
</Target>

Atributy a prvky

Následující části popisují atributy, podřízené prvky a nadřazené prvky.

Atributy

Atribut Popis
Name Požadovaný atribut.

Název cíle Cílový název může obsahovat libovolný znak s výjimkou $@()%*?..
Condition Nepovinný atribut.

Podmínka, která se má vyhodnotit. Pokud se podmínka vyhodnotí jako false, cíl nespustí tělo cíle ani žádné cíle nastavené v atributu DependsOnTargets . Další informace o podmínkách naleznete v tématu Podmínky.
Inputs Nepovinný atribut.

Soubory, které tvoří vstupy do tohoto cíle. Více souborů je odděleno středníky. Časové razítka souborů budou porovnána s časovými razítky souborů Outputs , aby bylo možné určit, jestli Target je aktuální. Další informace naleznete v tématu Přírůstkové buildy, Postupy: Sestavení přírůstkově a transformace.
Outputs Nepovinný atribut.

Soubory, které tvoří výstup do tohoto cíle. Více souborů je odděleno středníky. Časové razítka souborů budou porovnána s časovými razítky souborů Inputs , aby bylo možné určit, jestli Target je aktuální. Další informace naleznete v tématu Přírůstkové buildy, Postupy: Sestavení přírůstkově a transformace.
Returns Nepovinný atribut.

Sada položek, které budou zpřístupněny úkolům, které tento cíl vyvolávají, například úlohy NÁSTROJE MSBuild. Více cílů je odděleno středníky. Pokud cíle v souboru nemají žádné Returns atributy, použije se pro tento účel atributy Outputs.
KeepDuplicateOutputs Volitelný logický atribut.

Pokud truese zaznamená více odkazů na stejnou položku v výnosech cíle. Ve výchozím nastavení je falsetento atribut .
BeforeTargets Nepovinný atribut.

Seznam cílových názvů oddělených středníkem. Pokud je zadáno, znamená to, že by se tento cíl měl spustit před zadaným cílem nebo cíli. Autor projektu tak může rozšířit existující sadu cílů, aniž by je upravoval přímo. Další informace najdete v tématu Pořadí cílového sestavení.
AfterTargets Nepovinný atribut.

Seznam cílových názvů oddělených středníkem. Pokud je zadáno, znamená to, že by se tento cíl měl spustit po zadaném cíli nebo cílech. Autor projektu tak může rozšířit existující sadu cílů, aniž by je upravoval přímo. Další informace najdete v tématu Pořadí cílového sestavení.
DependsOnTargets Nepovinný atribut.

K cílům, které je potřeba provést před spuštěním tohoto cíle, nebo může dojít k analýze závislostí nejvyšší úrovně. Více cílů je odděleno středníky.
Label Nepovinný atribut.

Identifikátor, který dokáže identifikovat nebo objednat systémové a uživatelské prvky.

Podřízené prvky

Element (Prvek) Popis
Úkol Vytvoří a spustí instanci úlohy MSBuild. V cíli může existovat nula nebo více úkolů.
Propertygroup Obsahuje sadu uživatelem definovaných Property prvků. Počínaje rozhraním .NET Framework 3.5 Target může element obsahovat PropertyGroup elementy.
ItemGroup Obsahuje sadu uživatelem definovaných Item prvků. Počínaje rozhraním .NET Framework 3.5 Target může element obsahovat ItemGroup elementy. Další informace naleznete v tématu Položky.
Přichybě Způsobí, že se jeden nebo více cílů provede, pokud ContinueOnError je atribut ErrorAndStop (nebo false) pro neúspěšnou úlohu. V cíli může existovat nula nebo více OnError prvků. Pokud OnError jsou prvky přítomny, musí být posledními prvky v elementu Target .

Informace o atributu ContinueOnError naleznete v tématu Task element (MSBuild).

Nadřazené prvky

Element (Prvek) Popis
Projekt Povinný kořenový prvek souboru projektu MSBuild.

Poznámky

První cíl, který se má provést, se zadává za běhu. Cíle můžou mít závislosti na jiných cílech. Například cíl pro nasazení závisí na cíli pro kompilaci. Modul MSBuild spouští závislosti v pořadí, v jakém se zobrazují v atributu DependsOnTargets zleva doprava. Další informace naleznete v tématu Cíle.

Nástroj MSBuild je závislý na pořadí importu a poslední definice cíle s konkrétním Name atributem je použitá definice.

Cíl se provádí pouze jednou během sestavení, i když na něm závisí více než jeden cíl.

Pokud je cíl vynechán, protože jeho Condition atribut je vyhodnocen jako false, může se přesto spustit, pokud je vyvolán později v sestavení a jeho Condition atribut se vyhodnotí v true daném okamžiku.

Před msBuild 4 Target vrátil všechny položky, které byly zadány v atributu Outputs . K tomu bylo nutné, aby nástroj MSBuild tyto položky zaznamenával v případě, že úlohy později v sestavení požadovaly. Vzhledem k tomu, že neexistuje způsob, jak určit, které cíle měly výstupy, které by volající vyžadovali, nástroj MSBuild nashromáždil všechny položky ze všech Outputs vyvolaných volání Target. To vede k problémům se škálováním sestavení s velkým počtem výstupních položek.

Pokud uživatel určí Returns libovolný Target prvek v projektu, pak pouze ty Target, které mají Returns atribut zaznamenat tyto položky.

A Target může obsahovat Outputs atribut i Returns atribut. Outputs slouží Inputs k určení, jestli je cíl aktuální. Returns, pokud je k dispozici, přepíše hodnotu Outputs , aby bylo možné určit, které položky se vrátí volajícím. Pokud Returns není k dispozici, Outputs budou volajícím zpřístupněny s výjimkou výše popsaného případu.

Před MSBuild 4, kdykoli zahrnutí Target více odkazů na stejnou položku v jeho Outputs, tyto duplicitní položky by byly zaznamenány. Ve velmi rozsáhlých buildech, které měly velký počet výstupů a mnoho vzájemných závislostí projektu, by to způsobilo plýtvání velkým množstvím paměti, protože duplicitní položky nebyly využity. KeepDuplicateOutputs Pokud je atribut nastaven na true, tyto duplicity jsou zaznamenány.

Příklad

Následující příklad kódu ukazuje Target prvek, který spouští Csc úlohu.

<Target Name="Compile" DependsOnTargets="Resources" Returns="$(TargetPath)">
    <Csc Sources="@(CSFile)"
          TargetType="library"
          Resources="@(CompiledResources)"
          EmitDebugInformation="$(includeDebugInformation)"
          References="@(Reference)"
          DebugType="$(debuggingType)" >
        <Output TaskParameter="OutputAssembly"
                  ItemName="FinalAssemblyName" />
    </Csc>
</Target>

Viz také