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 true se zaznamená více odkazů na stejnou položku v výnosech cíle. Ve výchozím nastavení je false tento 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>