Dědičnost vlastností v projektech sady Visual Studio

Nativní projektový systém sady Visual Studio je založený na nástroji MSBuild. NÁSTROJ MSBuild definuje formáty souborů a pravidla pro vytváření projektů libovolného druhu. Spravuje většinu složitosti sestavování pro více konfigurací a platforem. Zjistíte, jak to funguje. To je zvlášť důležité, pokud chcete definovat vlastní konfigurace. Nebo můžete vytvořit opakovaně použitelné sady vlastností, které můžete sdílet a importovat do více projektů.

Soubor .vcxproj, soubory .props a soubory .targets

Vlastnosti projektu jsou uloženy v několika souborech. Některé jsou uložené přímo v .vcxproj souboru projektu. Ostatní pocházejí z jiných .targets souborů nebo .props souborů, které soubor projektu importuje a které poskytují výchozí hodnoty. Soubory projektu sady Visual Studio 2015 najdete ve složce specifické pro národní prostředí v základním adresáři %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\v140.

Vlastnosti projektu jsou uloženy v několika souborech. Některé jsou uložené přímo v .vcxproj souboru projektu. Ostatní pocházejí z jiných .targets souborů nebo .props souborů, které soubor projektu importuje a které poskytují výchozí hodnoty. Soubory projektu sady Visual Studio 2017 najdete ve složce specifické pro národní prostředí v základním adresáři %VSINSTALLDIR%Common7\IDE\VC\VCTargets\.

Vlastnosti projektu jsou uloženy v několika souborech. Některé jsou uložené přímo v .vcxproj souboru projektu. Ostatní pocházejí z jiných .targets souborů nebo .props souborů, které soubor projektu importuje a které poskytují výchozí hodnoty. Soubory projektu sady Visual Studio najdete ve složce specifické pro národní prostředí v základním adresáři %VSINSTALLDIR%\MSBuild\Microsoft\VC\<version>. Tato <version> verze je specifická pro verzi sady Visual Studio. v160 Je to pro Visual Studio 2019.

Vlastnosti jsou také uloženy ve všech vlastních .props souborech, které můžete přidat do vlastního projektu. Důrazně doporučujeme tyto soubory upravovat ručně. Místo toho použijte stránky vlastností v integrovaném vývojovém prostředí k úpravě všech vlastností, zejména těch, které se účastní dědičnosti, pokud nemáte hluboké znalosti nástroje MSBuild a .vcxproj souborů.

Jak je znázorněno výše, stejná vlastnost pro stejnou konfiguraci může být v těchto různých souborech přiřazena jinou hodnotu. Při sestavování projektu modul MSBuild vyhodnotí soubor projektu a všechny importované soubory v dobře definovaném pořadí, které je popsáno později. Při vyhodnocování každého souboru všechny hodnoty vlastností definované v daném souboru přepíší existující hodnoty. Všechny hodnoty, které nejsou zadány, jsou zděděny ze souborů, které byly vyhodnoceny dříve. Když nastavíte vlastnost se stránkami vlastností, je také důležité věnovat pozornost tomu, kde jste ji nastavili. Pokud v souboru nastavíte vlastnost "X" .props , ale vlastnost je v souboru projektu nastavená na "Y", projekt se sestaví s vlastností nastavenou na "Y". Pokud je stejná vlastnost nastavena na "Z" u položky projektu, například .cpp soubor, pak modul MSBuild použije hodnotu "Z".

Zde uvádíme základní strom dědičnosti:

  1. Výchozí nastavení ze sady nástrojů MSBuild CPP ( Microsoft.Cpp.Default.props soubor v základním adresáři, který je importován souborem .vcxproj .)

  2. Seznamy vlastností

  3. .vcxproj Soubor. (Tento soubor může přepsat výchozí nastavení a nastavení seznamu vlastností.)

  4. Metadata položek

Tip

Na stránce vlastností je vlastnost v aktuálním kontextu definována tučným písmem . Vlastnost uvedená normálním písmem je zděděná.

Zobrazení rozšířeného souboru projektu se všemi importovanými hodnotami

Někdy je užitečné zobrazit rozbalený soubor, ve kterém zjistíte, jak je hodnota dané vlastnosti zděděna. Rozbalenou verzi zobrazíte zadáním následujícího příkazu na příkazovém řádku Visual Studio. (Podle potřeby zaměňte zástupné symboly názvy souborů, které chcete použít.)

msbuild /pp:temp.txt myapp.vcxproj

Rozšířené projektové soubory můžou být velké a obtížně pochopitelné, pokud neznáte nástroj MSBuild. Zde uvádíme základní strukturu souboru projektu:

  1. Základní vlastnosti projektu, které nejsou v integrovaném vývojovém prostředí (IDE) vystaveny

  2. Import , Microsoft.cpp.default.propskterý definuje některé základní vlastnosti nezávislé na sadě nástrojů.

  3. Vlastnosti globální konfigurace (vystavené jako PlatformToolset a Výchozí vlastnosti projektu na stránce Obecné konfigurace). Tyto vlastnosti určují, které sady nástrojů a vnitřní seznamy vlastností se importují v Microsoft.cpp.props dalším kroku.

  4. Import , Microsoft.cpp.propskterý nastaví většinu výchozích hodnot projektu.

  5. Import všech seznamů vlastností, včetně .user souborů. Tyto seznamy vlastností mohou přepsat vše kromě vlastností PlatformToolset a Project výchozí vlastnosti.

  6. Zbývající vlastnosti konfigurace projektu. Tyto hodnoty mohou přepsat nastavení provedená v seznamu vlastností.

  7. Položky (soubory) spolu s příslušnými metadaty. Tyto položky jsou vždy posledním slovem v pravidlech vyhodnocení nástroje MSBuild, i když se vyskytují před jinými vlastnostmi a importy.

Další informace naleznete v tématu MSBuild Vlastnosti.

Konfigurace sestavení

Konfigurace je pouze libovolná skupina vlastností, které mají název. Visual Studio poskytuje konfigurace ladění a vydaných verzí. Každá z nich nastaví různé vlastnosti pro sestavení nebo vydání ladění. Pomocí Configuration Manageru můžete definovat vlastní konfigurace. Představují pohodlný způsob, jak seskupit vlastnosti pro konkrétní variantu sestavení.

Pokud chcete získat lepší představu o konfiguracích sestavení, otevřete Správce vlastností. Můžete ho otevřít tak, že v závislosti na nastavení zvolíte Zobrazit správce vlastností nebo Zobrazit > jiný správce vlastností Windows>.> Správce vlastností má uzly pro každou konfiguraci a dvojici platforem v projektu. Pod každým z těchto uzlů jsou uzly pro seznamy vlastností (.props soubory), které pro danou konfiguraci nastavují určité vlastnosti.

Screenshot of the Property Manager window.

Můžete například přejít do podokna Obecné na stránkách vlastností. Změňte vlastnost Znaková sada na Hodnotu Not Set místo "Use Unicode" (Použít unicode) a potom klikněte na OK. Správce vlastností teď neobsahuje seznam vlastností podpory unicode. Odebere se pro aktuální konfiguraci, ale pro další konfigurace je stále k dispozici.

Další informace o Správci vlastností a listech vlastností naleznete v tématu Sdílení nebo opakované použití nastavení projektu visual Studio C++.

Tip

Soubor .user je starší funkce. Doporučujeme, abyste vlastnosti správně seskupili podle konfigurace a platformy.