Přizpůsobení sestavení

Projekty MSBuild, které používají standardní proces sestavení (import Microsoft.Common.props a Microsoft.Common.targets), mají několik hooků rozšiřitelnosti, které můžete použít k přizpůsobení procesu sestavení.

Mnoho přizpůsobitelných operací sestavení je řízeno vlastnostmi. Je důležité vědět, jak a kde nastavit hodnotu vlastnosti, aby měla požadovaný efekt. Vlastnosti můžete nastavit na příkazovém řádku (a v souborech odpovědí), ve speciálních souborech, jako je Directory.Build.props, v importovaných souborech nebo v souboru projektu. Je důležité vědět, kde se vlastnost používá, nastavuje nebo mění, a pořadí importovaných souborů, včetně implicitních importů ze sad SDK, jako je sada .NET SDK.

Seznam vlastností naleznete v tématu MSBuild společné vlastnosti.

Prozkoumání možností přizpůsobení

Následující možnosti přizpůsobení jsou uvedeny v pořadí zvýšení složitosti a rozsahu vlivu. Doporučujeme použít nejméně složitou možnost přizpůsobení, která slouží vašemu účelu, počínaje od začátku tohoto seznamu.

Možnost přizpůsobení Popis
Přidání argumentů do příkazového řádku NÁSTROJE MSBuild Nastavte globální vlastnosti, které ovlivňují sestavení a sestavení hlavního projektu všech závislých projektů.
Přizpůsobení sestavení pro jeden projekt Přidáním vlastností nebo .props .targets souborů můžete přizpůsobit nastavení sestavení.
Zpracování vygenerovaných souborů v procesu sestavení Jak zajistit, aby se vygenerované soubory správně zahrnuly do výstupu sestavení.
Přizpůsobení sestavení pro jeden nebo více projektů Přidejte vlastnosti do adresáře.Build.props nebo přidejte vlastnosti a cíle do Adresáře.Build.targets a přizpůsobte sestavení pro všechny projekty ve složce. Tato technika je užitečná pro nastavení vlastností, které jsou nastaveny nebo používány sadou SDK, a také přizpůsobení oborů tak, aby ovlivnily všechny projekty ve složce nebo podsložce.
Přizpůsobení místního sestavení Proveďte změny sestavení jenom na místním počítači, aniž by to ovlivnilo sdílené zdrojové soubory.
Přizpůsobení všech sestavení .NET Přizpůsobte si sestavení s rozsahem celého systému pro sestavení .NET.
Přizpůsobení sestavení C++ Přizpůsobte sestavení jazyka C++, které je vymezeno na projekt, řešení, složku nebo všechna sestavení řízená instalací nástroje MSBuild v systému.

Přidání argumentů do volání MSBuild příkazového řádku pro váš projekt

Globální vlastnosti můžete nastavit na příkazovém řádku. Globální vlastnosti ovlivňují všechny sestavení projektu, včetně závislostí. Vzpomeňte si, že sestavení projektu automaticky aktivuje možné sestavení pro všechny závislosti projektu. Normální chování nástroje MSBuild spočívá v sestavení všech závislých projektů, které jsou zastaralé. Tyto závislé sestavení projektu se spustí se stejným globálním nastavením vlastností z příkazového řádku jako původní projekt.

Na sestavení příkazového řádku projektu se použije soubor Directory.Build.rsp nebo nad zdrojovým adresářem. Podrobnosti najdete v souborech odpovědí nástroje MSBuild.

Volba mezi přidáním vlastností do .props souboru nebo souboru .targets

Nástroj MSBuild je závislý na pořadí importu a poslední definice vlastnosti (nebo UsingTask cíle) je použitá definice.

Při použití explicitních importů můžete importovat z libovolného .props místa nebo .targets ze souboru. Tady je široce využívaná konvence:

  • .props soubory se naimportují v rané fázi pořadí importu.

  • .targets soubory se importují pozdě v pořadí sestavení.

Tato konvence se vynucuje importem <Project Sdk="SdkName"> (to znamená, že import sdk.props přichází jako první před veškerým obsahem souboru a potom sdk.targets přijde jako poslední po celém obsahu souboru).

Při rozhodování o umístění vlastností použijte následující obecné pokyny:

  • U mnoha vlastností nezáleží na tom, kde jsou definované, protože nejsou přepsány a jsou jen pro čtení v době provádění.

  • Pro chování, které je možné přizpůsobit v individuálním projektu, nastavte výchozí hodnoty v .props souborech.

  • Vyhněte se nastavení závislých vlastností v .props souborech čtením hodnoty pravděpodobně přizpůsobené vlastnosti, protože přizpůsobení neproběhne, dokud nástroj MSBuild nepřečte projekt uživatele.

  • Nastavte závislé vlastnosti v .targets souborech, protože si vyberou vlastní nastavení z jednotlivých projektů.

  • Pokud potřebujete přepsat vlastnosti, udělejte to v .targets souboru poté, co by se všechna vlastní nastavení projektu uživatele projevila. Při použití odvozených vlastností buďte opatrní; můžou být také nutné přepsat odvozené vlastnosti.

  • Zahrnout položky do .props souborů (podmíněno vlastností). Všechny vlastnosti jsou považovány za před jakoukoli položkou, takže přizpůsobení vlastností projektu uživatele se vyzvedne a importované položky v .props souborech umožní projektu uživatele Remove nebo Update jakékoli položce, kterou importuje.

  • Definujte cíle v .targets souborech. Pokud .targets je ale soubor importován sadou SDK, mějte na paměti, že tento scénář znesnadňuje přepsání cíle, protože projekt uživatele nemá místo, kde ho ve výchozím nastavení přepsat.

  • Pokud je to možné, upřednostněte přizpůsobení vlastností v době vyhodnocení při změně vlastností uvnitř cíle. Toto vodítko usnadňuje načtení projektu a pochopení toho, co dělá.