Pořadí sestavení cílů
Cíle musí být seřazeny, pokud vstup do jednoho cíle závisí na výstupu jiného cíle. Pomocí těchto atributů můžete určit pořadí spuštění cílů:
InitialTargets
. TentoProject
atribut určuje cíle, které se spustí jako první, i když jsou cíle zadané na příkazovém řádku nebo v atributuDefaultTargets
.DefaultTargets
. TentoProject
atribut určuje, které cíle se spustí, pokud není cíl explicitně zadán na příkazovém řádku.DependsOnTargets
. TentoTarget
atribut určuje cíle, které musí běžet před spuštěním tohoto cíle.BeforeTargets
aAfterTargets
. TytoTarget
atributy určují, že tento cíl by měl běžet před nebo za zadanými cíli.
Cíl se během sestavení nikdy nespustí dvakrát, i když na něm závisí další cíl v sestavení. Po spuštění cíle se jeho příspěvek k sestavení dokončí.
Cíle můžou mít Condition
atribut. Pokud se zadaná podmínka vyhodnotí jako false
, cíl se nespustí a nemá na sestavení žádný vliv. Další informace o podmínkách naleznete v tématu Podmínky.
Počáteční cíle
Atribut InitialTargets
elementu Project určuje cíle, které se spustí jako první, i když jsou cíle zadány na příkazovém řádku nebo v atributu DefaultTargets
. Počáteční cíle se obvykle používají ke kontrole chyb.
Hodnota atributu InitialTargets
může být středníkem odděleným uspořádaným seznamem cílů. Následující příklad určuje, že Warm
se cíl spustí a pak Eject
cíl spustí.
<Project InitialTargets="Warm;Eject" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Importované projekty můžou mít své vlastní InitialTargets
atributy. Všechny počáteční cíle se agregují společně a spouští se v pořadí.
Další informace naleznete v tématu Postupy: Určení cíle, který se má nejprve sestavit.
Výchozí cíle
Atribut DefaultTargets
elementu Project určuje, který cíl nebo cíle jsou vytvořeny, pokud cíl není explicitně zadán v příkazovém řádku.
Hodnota atributu DefaultTargets
může být středníkem odděleným seřazeným seznamem výchozích cílů. Následující příklad určuje, že Clean
se cíl spustí a pak Build
cíl spustí.
<Project DefaultTargets="Clean;Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Výchozí cíle můžete přepsat pomocí přepínače -target na příkazovém řádku. Následující příklad určuje, že Build
se cíl spustí a pak Report
cíl spustí. Když tímto způsobem zadáte cíle, budou všechny výchozí cíle ignorovány.
msbuild -target:Build;Report
Pokud jsou zadány počáteční i výchozí cíle a pokud nejsou zadány žádné cíle příkazového řádku, nástroj MSBuild nejprve spustí počáteční cíle a pak spustí výchozí cíle.
Importované projekty můžou mít své vlastní DefaultTargets
atributy. První DefaultTargets
zjištěný atribut určuje, které výchozí cíle se budou spouštět.
Další informace naleznete v tématu Postupy: Určení cíle, který se má nejprve sestavit.
První cíl
Pokud neexistují žádné počáteční cíle, výchozí cíle nebo cíle příkazového řádku, nástroj MSBuild spustí první cíl, se kterým v souboru projektu nebo v importovaných souborech projektu narazí.
Cílové závislosti
Cíle můžou popisovat vztahy závislostí mezi sebou. Atribut DependsOnTargets
označuje, že cíl závisí na jiných cílech. Příklad:
<Target Name="Serve" DependsOnTargets="Chop;Cook" />
říká nástroji MSBuild, že Serve
cíl závisí na Chop
cíli a Cook
cíli. Nástroj MSBuild spustí Chop
cíl a pak Cook
spustí cíl před spuštěním Serve
cíle.
BeforeTargets and AfterTargets
Cílové pořadí můžete zadat pomocí BeforeTargets
atributů a AfterTargets
atributů.
Zvažte následující skript.
<Project DefaultTargets="Compile;Link" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Compile">
<Message Text="Compiling" />
</Target>
<Target Name="Link">
<Message Text="Linking" />
</Target>
</Project>
Pokud chcete vytvořit zprostředkující cíl Optimize
, který se spustí za Compile
cílem, ale před Link
cílem, přidejte následující cíl kamkoli do elementu Project
.
<Target Name="Optimize" AfterTargets="Compile">
<Message Text="Optimizing" />
</Target>
Případně zadejte objednávku jako
<Target Name="Optimize" BeforeTargets="Link">
<Message Text="Optimizing" />
</Target>
Není užitečné zadat obaBeforeTargets
i AfterTargets
ve stejném cíli. Jak je popsáno v další části, způsobí spuštění nového cíle pouze první zjištěný cíl.
Určení pořadí cílového sestavení
Nástroj MSBuild určuje pořadí cílového sestavení následujícím způsobem:
InitialTargets
cíle jsou spuštěny.Cíle zadané na příkazovém řádku přepínače -target se spustí. Pokud na příkazovém řádku zadáte žádné cíle,
DefaultTargets
pak se cíle spustí. Pokud neexistuje ani jeden z nich, spustí se první zjištěný cíl.Vyhodnocuje
Condition
se atribut cíle. Pokud je atribut přítomný a vyhodnotífalse
seCondition
jako , cíl se nespustí a nebude mít na sestavení žádný další vliv.Jiné cíle, které uvádějí podmíněný cíl v
BeforeTargets
předepsaném pořadí neboAfterTargets
stále provádějí.Před spuštěním nebo přeskočením
DependsOnTargets
cíle se jeho cíle spustí, pokudCondition
se atribut nepoužije na cíl a vyhodnocujefalse
se .Poznámka:
Cíl se považuje za vynechaný, pokud se nespustí, protože jeho výstupní položky jsou aktuální (viz přírůstkové sestavení). Tato kontrola se provádí těsně před provedením úkolů uvnitř cíle a nemá vliv na pořadí provádění cílů.
Před spuštěním nebo přeskočením cíle se spustí jakýkoli jiný cíl, který vypíše cíl v atributu
BeforeTargets
.Před spuštěním cíle se porovná jeho
Inputs
atribut aOutputs
atribut. Pokud nástroj MSBuild zjistí, že všechny výstupní soubory jsou zastaralé vzhledem k odpovídajícímu vstupnímu souboru nebo souborům, nástroj MSBuild provede cíl. V opačném případě nástroj MSBuild přeskočí cíl.Po spuštění nebo vynechání cíle se spustí jakýkoli jiný cíl, který je vypíše v atributu
AfterTargets
.
Související obsah
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro