Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek poskytuje přehled možností přizpůsobení sestavení a pokyny k tomu, kdy použít jednotlivé přístupy. Možnosti jsou prezentovány v pořadí složitosti, od argumentů příkazového řádku po přizpůsobení celého systému.
Předpoklady
- Znalost struktury souborů projektu MSBuild (
.csproj,.vbprojnebo podobné) - Základní znalost vlastností a cílů nástroje MSBuild
Přehled
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í | Description |
|---|---|
| Přidejte argumenty do příkazového řádku MSBuild | Nastavte globální vlastnosti, které ovlivňují sestavení hlavního projektu a všech závislých projektů. |
| Přizpůsobit sestavení pro jeden projekt | Přidejte vlastnosti do souborů .props nebo .targets a přizpůsobte si nastavení sestavení. |
| Zpracování vygenerovaných souborů v procesu sestavení | Ujistěte se, že jsou v sestavení správně zahrnuté vygenerované soubory. |
| Přizpůsobte 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 definovány nebo používány sadou SDK, a také pro vymezení přizpůsobení, které ovlivní všechny projekty ve složce nebo podsložce. |
| Přizpůsobte místní sestavení | Proveďte změny sestavení jenom na místním počítači, aniž by to ovlivnilo sdílené zdrojové soubory. |
| Přizpůsobte sestavení řešení | Přizpůsobte chování procesu sestavení v rámci řešení, před a po jednotlivých sestaveních projektů. |
| Přizpůsobení všech sestavení .NET | Přizpůsobte sestavení v rámci celého systému pro .NET sestavení. |
| 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řidejte argumenty k příkazům MSBuild v příkazovém řá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.
Soubory Directory.Build.rsp ve zdrojovém adresáři nebo nad ním se použijí pro sestavení z příkazového řádku vašeho projektu. 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íl) je ta definice, která se použije.
Při použití explicitních importů můžete importovat ze souboru .props nebo .targets kdykoli. Tady je široce využívaná konvence:
.propssoubory se naimportují v rané fázi pořadí importu..targetssoubory 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
.propssouborech.Vyhněte se nastavení závislých vlastností v
.propssouborech č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
.targetssouborech, protože přebírají vlastní nastavení od jednotlivých projektů.Pokud potřebujete přepsat vlastnosti, udělejte to v souboru
.targetspoté, co se všechna uživatelská nastavení projektu projeví. Při použití odvozených vlastností buďte opatrní; odvozené vlastnosti může být nutné také přepsat.Zahrnout položky do
.propssouborů (podmíněno vlastností). Všechny vlastnosti jsou posuzovány před jakoukoli položkou, takže se přizpůsobení vlastností projektu uživatele zpracuje a importované položky ve.propssouborech dávají projektu uživatele možnostRemoveneboUpdatejakoukoli importovanou položku.Definujte cíle v
.targetssouborech. Pokud je ale soubor.targetsimportován sadou SDK, mějte na paměti, že tento scénář znesnadňuje přepsání cíle, protože ve výchozím nastavení není v uživatelském projektu místo, kde by ho bylo možné 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. Tyto pokyny usnadňují načtení projektu a pochopení jeho účelu.