Héritage des propriétés dans les projets Visual Studio

Le système de projet natif Visual Studio est basé sur MSBuild. MSBuild définit des formats de fichier et des règles pour la création de projets de n’importe quel type. Il gère la plupart de la complexité de la création de plusieurs configurations et plateformes. Vous trouverez utile de comprendre son fonctionnement. Cela est particulièrement important si vous souhaitez définir des configurations personnalisées. Vous pouvez également créer des ensembles réutilisables de propriétés que vous pouvez partager et importer dans plusieurs projets.

Fichier .vcxproj, fichiers .props et fichiers .targets

Les propriétés du projet sont stockées dans plusieurs fichiers. Certains sont stockés directement dans le .vcxproj fichier projet. D’autres proviennent d’autres .targets fichiers .props importés par le fichier projet et qui fournissent des valeurs par défaut. Vous trouverez les fichiers projet Visual Studio 2015 dans un dossier spécifique aux paramètres régionaux sous le répertoire de base. %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\v140

Les propriétés du projet sont stockées dans plusieurs fichiers. Certains sont stockés directement dans le .vcxproj fichier projet. D’autres proviennent d’autres .targets fichiers .props importés par le fichier projet et qui fournissent des valeurs par défaut. Vous trouverez les fichiers projet Visual Studio 2017 dans un dossier spécifique aux paramètres régionaux sous le répertoire de base. %VSINSTALLDIR%Common7\IDE\VC\VCTargets\

Les propriétés du projet sont stockées dans plusieurs fichiers. Certains sont stockés directement dans le .vcxproj fichier projet. D’autres proviennent d’autres .targets fichiers .props importés par le fichier projet et qui fournissent des valeurs par défaut. Vous trouverez les fichiers projet Visual Studio dans un dossier spécifique aux paramètres régionaux sous le répertoire de base. %VSINSTALLDIR%\MSBuild\Microsoft\VC\<version> Il <version> est spécifique à la version de Visual Studio. C’est v160 pour Visual Studio 2019.

Les propriétés sont également stockées dans tous les fichiers personnalisés .props que vous pouvez ajouter à votre propre projet. Nous vous recommandons vivement de ne pas modifier ces fichiers manuellement. Utilisez plutôt les pages de propriétés de l’IDE pour modifier toutes les propriétés, en particulier celles qui participent à l’héritage, sauf si vous avez une compréhension approfondie de MSBuild et .vcxproj de fichiers.

Comme indiqué précédemment, une même propriété pour une même configuration peut avoir une valeur différente dans ces différents fichiers. Lorsque vous générez un projet, le moteur MSBuild évalue le fichier projet et tous les fichiers importés dans un ordre bien défini décrit ultérieurement. Comme chaque fichier est évalué, toutes les valeurs de propriété définies dans ce fichier remplacent les valeurs existantes. Toutes les valeurs qui ne sont pas spécifiées sont héritées des fichiers évalués précédemment. Lorsque vous définissez une propriété avec des pages de propriétés, il est également important de prêter attention à l’emplacement où vous l’avez définie. Si vous définissez une propriété sur « X » dans un .props fichier, mais que la propriété est définie sur « Y » dans le fichier projet, le projet sera généré avec la propriété définie sur « Y ». Si la même propriété est définie sur « Z » sur un élément de projet, tel qu’un .cpp fichier, le moteur MSBuild utilise la valeur « Z ».

Voici l’arborescence d’héritage de base :

  1. Paramètres par défaut de l’ensemble d’outils MSBuild CPP (fichier Microsoft.Cpp.Default.props dans le répertoire de base, qui est importé par le .vcxproj fichier.)

  2. Feuilles de propriétés

  3. fichier .vcxproj. (Ce fichier peut remplacer les paramètres de feuille de propriétés et par défaut.)

  4. Métadonnées d'élément

Conseil

Dans une page de propriétés, une propriété en gras est définie dans le contexte actuel. Une propriété en police normale est héritée.

Afficher un fichier projet développé avec toutes les valeurs importées

Il est parfois utile d'afficher le fichier développé pour déterminer comment une valeur de propriété donnée est héritée. Pour afficher la version développée, entrez la commande suivante à une invite de commandes Visual Studio. (Remplacez les espaces réservés des noms de fichiers par ceux que vous voulez utiliser.)

msbuild /pp:temp.txtmon_application.vcxproj

Les fichiers projet développés peuvent être volumineux et difficiles à comprendre, sauf si vous êtes familiarisé avec MSBuild. Voici la structure de base d'un fichier projet :

  1. Propriétés fondamentales du projet, qui ne sont pas exposées dans l’IDE.

  2. Importation de , qui définit des propriétés indépendantes de l’ensemble d’outils Microsoft.cpp.default.propsde base.

  3. Propriétés de configuration globales (exposées comme les propriétés par défaut PlatformToolset et Project dans la page Configuration générale. Ces propriétés déterminent l’ensemble d’outils et les feuilles de propriétés intrinsèques importées à Microsoft.cpp.props l’étape suivante.

  4. Importation de Microsoft.cpp.props, qui définit la plupart des valeurs par défaut du projet.

  5. Importer toutes les feuilles de propriétés, y compris .user les fichiers. Ces feuilles de propriétés peuvent tout remplacer sauf les propriétés par défaut PlatformToolset et Project.

  6. Le reste des propriétés de configuration du projet. Ces valeurs peuvent remplacer celles définies dans les feuilles de propriétés.

  7. Éléments (fichiers) avec leurs métadonnées. Ces éléments sont toujours le dernier mot dans les règles d’évaluation MSBuild, même s’ils se produisent avant d’autres propriétés et importations.

Pour plus d’informations, consultez l’article Propriétés MSBuild.

Configurations de build

Une configuration est simplement un groupe arbitraire de propriétés qui porte un nom. Visual Studio fournit des configurations de débogage et de mise en production. Chaque propriété définit les différentes propriétés appropriées pour une build de débogage ou une build de mise en production. Vous pouvez utiliser Configuration Manager pour définir des configurations personnalisées. Il s’agit d’un moyen pratique de regrouper les propriétés d’une version spécifique.

Pour obtenir une meilleure idée des configurations de build, ouvrez Property Manager. Vous pouvez l’ouvrir en choisissant View > Property Manager ou View > Other Windows > Property Manager, en fonction de vos paramètres. Property Manager a des nœuds pour chaque paire de configuration et de plateforme dans le projet. Sous chacun de ces nœuds, il s’agit de nœuds pour les feuilles de propriétés (.props fichiers) qui définissent certaines propriétés spécifiques pour cette configuration.

Screenshot of the Property Manager window.

Par exemple, vous pouvez accéder au volet Général dans les pages de propriétés. Remplacez la propriété Jeu de caractères par « Non défini » au lieu de « Utiliser Unicode », puis cliquez sur OK. Le Gestionnaire de propriétés n’affiche désormais aucune feuille de propriétés prise en charge Unicode. Elle est supprimée pour la configuration actuelle, mais elle est toujours là pour d’autres configurations.

Pour plus d’informations sur le Gestionnaire de propriétés et les feuilles de propriétés, consultez Partager ou réutiliser des paramètres de projet Visual Studio C++.

Conseil

Le .user fichier est une fonctionnalité héritée. Nous vous recommandons de le supprimer pour conserver les propriétés correctement regroupées en fonction de la configuration et de la plateforme.