Jak: rozšířit procesu vytváření aplikace Visual Studio
Visual Studio Je definován proces sestavování řadou MSBuild .targets soubory, které jsou dováženy do souboru projektu.Jeden z těchto importovaných souborů Microsoft.Common.targets, lze rozšířit na spustit na několika místech v procesu vytváření vlastních úkolů.Toto téma popisuje dvě metody, které lze rozšířit Visual Studio proces vytváření:
Potlačení zvláštní předdefinované cíle definované v Microsoft.Common.targets.
Přepsání vlastnosti "DependsOn" definované v Microsoft.Common.targets.
Potlačení předdefinované cíle
Soubor Microsoft.Common.targets obsahuje sadu předdefinovaných prázdné cíle, které se nazývají před a po některé z hlavních cílů v procesu vytváření.Například MSBuild volání BeforeBuild cíl před hlavní CoreBuild cíl a AfterBuild cíl po CoreBuild cíl.Standardně prázdná cíle v Microsoft.Common.targets neprovádějte žádnou akci, ale jejich výchozí chování můžete přepsat definováním cíle v souboru projektu, že dovozy Microsoft.Common.targets.Tímto způsobem můžete použít MSBuild vám větší kontrolu nad procesem vytváření úkolů.
Potlačit předdefinované cíle
Identifikaci předdefinované cíle v Microsoft.Common.targets, který chcete změnit.Zobrazit úplný seznam cílů, které lze bezpečně přepsat v následující tabulce.
Bezprostředně před definovat cíle nebo cílů na konci souboru projektu </Project> značky.Příklad:
<Project> ... <Target Name="BeforeBuild"> <!-- Insert tasks to run before build here --> </Target> <Target Name="AfterBuild"> <!-- Insert tasks to run after build here --> </Target> </Project>
Vytvořte soubor projektu.
Následující tabulka obsahuje všechny cíle Microsoft.Common.targets, který lze bezpečně přepsat.
Cílový název |
Description |
---|---|
BeforeCompile, AfterCompile |
Úkoly do jednoho z těchto cílů spustit před nebo po dokončení kompilace jádra.Většina úprav jsou prováděny v jedné z těchto dvou cílů. |
BeforeBuild, AfterBuild |
Úkoly do jednoho z těchto cílů bude spuštěn před nebo za všechno ostatní v sestavení.
Poznámka
BeforeBuild a AfterBuild cíle již definovány komentáře na konci většiny souborů projektu.Umožňuje snadno přidávat události pre-a post-build se v souboru projektu.
|
BeforeRebuild, AfterRebuild |
Úkoly vloženy jeden z těchto cílů spustit před nebo po sestavení základní funkce vyvolat.Je pořadí provádění cíl v Microsoft.Common.targets: BeforeRebuild, Clean, Builda AfterRebuild. |
BeforeClean, AfterClean |
Úkoly do jednoho z těchto cílů spustit před nebo po základních je vyvolána funkce vyčistit. |
BeforePublish, AfterPublish |
Úkoly vloženy jeden z těchto cílů spustit před nebo po publikování základní funkce vyvolat. |
BeforeResolveReference, AfterResolveReferences |
Úkoly do jednoho z těchto cílů spustit před nebo po jsou odkazy na sestavení. |
BeforeResGen, AfterResGen |
Úkoly do jednoho z těchto cílů spustit před nebo po vygenerování prostředky. |
Přepsání vlastnosti "DependsOn"
Potlačení předdefinované cíle je snadný způsob, jak rozšířit procesu vytváření, ale protože MSBuild vyhodnotí definice cílů postupně, neexistuje žádný způsob, jak zabránit jiného projektu, že dovozy projektu objek cíle, které jste již přepsána.Tak například poslední AfterBuild cíle definované v souboru projektu po všechny projekty byly dovezeny, bude ten, který se používá při sestavení.
Můžete chránit proti neúmyslnému přepsání cíle přepsáním "DependsOn" vlastnosti, které jsou použity v DependsOnTargets atributy v celém souboru Microsoft.Common.targets.Například Build cíl obsahuje DependsOnTargets hodnota atributu "$(BuildDependsOn)".Zvážit:
<Target Name="Build" DependsOnTargets="$(BuildDependsOn)"/>
Figurku XML určuje, že před Build cíl lze spustit všechny cíle uvedené v BuildDependsOn musí být spuštěna první vlastnost.BuildDependsOn Vlastnost je definována jako:
<PropertyGroup>
<BuildDependsOn>
BeforeBuild;
CoreBuild;
AfterBuild
</BuildDependsOn>
</PropertyGroup>
Hodnotu této vlastnosti lze přepsat deklaraci jinou vlastnost s názvem BuildDependsOn na konci souboru projektu.Včetně předchozí BuildDependsOn vlastnost nové vlastnosti můžete přidat nové cíle začátek a konec seznamu cílových.Příklad:
<PropertyGroup>
<BuildDependsOn>
MyCustomTarget1;
$(BuildDependsOn);
MyCustomTarget2
</BuildDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget1">
<Message Text="Running MyCustomTarget1..."/>
</Target>
<Target Name="MyCustomTarget2">
<Message Text="Running MyCustomTarget2..."/>
</Target>
Projekty, které importovat soubory projektu můžete přepsat tyto vlastnosti bez přepsání úprav, které jste provedli.
Potlačit vlastnost "DependsOn"
Předdefinované vlastnosti "DependsOn" v Microsoft.Common.targets, která chcete potlačit identifikaci.Viz seznam vlastností běžně Potlačené "DependsOn" v následující tabulce.
Definujte další instanci vlastnosti nebo vlastnosti na konci souboru projektu.Původní vlastnosti patří například $(BuildDependsOn), nové vlastnosti.
Definujte vlastní cíle před nebo po definice vlastnosti.
Vytvořte soubor projektu.
Běžně potlačených vlastností "DependsOn"
Název vlastnosti |
Description |
---|---|
BuildDependsOn |
Vlastnost přepsat, chcete-li vložit vlastní cíle před nebo po sestavení celého procesu. |
CleanDependsOn |
Vlastnost přepsat, chcete-li vyčistit výstup z vlastní build proces. |
CompileDependsOn |
Vlastnost přepsat, chcete-li vložit vlastní procesy před nebo po provedení kroku kompilace. |
Viz také
Referenční dokumentace
Koncepty
Integrace aplikace Visual Studio (MSBuild)