Partager via


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 fichier projet .vcxproj. D’autres proviennent d’autres fichiers .targets ou .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 fichier projet .vcxproj. D’autres proviennent d’autres fichiers .targets ou .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 fichier projet .vcxproj. D’autres proviennent d’autres fichiers .targets ou .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>. La <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 .props fichiers personnalisés que vous pourriez ajouter à votre propre projet. Nous vous recommandons vivement de PAS modifier ces fichiers manuellement. Au lieu de cela, utilisez les pages de propriétés dans l’IDE pour modifier toutes les propriétés, en particulier celles qui participent à l’héritage, à moins que vous n’ayez une connaissance approfondie de MSBuild et .vcxproj 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. Quand 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 ci-plus tard. Comme chaque fichier est évalué, toutes les valeurs de propriété définies dans ce fichier remplacent les valeurs existantes. Les valeurs qui ne sont pas spécifiées sont héritées des fichiers qui ont été évalués précédemment. Quand vous définissez une propriété dans les pages de propriétés, faites bien attention à l’endroit où vous la définissez. Si vous définissez une propriété sur « X » dans un fichier .props, mais qu’elle est définie sur « Y » dans le fichier projet, le projet est 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, par exemple, un fichier .cpp, 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 fichier .vcxproj.)

  2. Feuilles de propriétés

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

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

Conseil

Sur une page de propriétés, une propriété dans 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.txt myapp.vcxproj

Les fichiers projet développés peuvent être volumineux et difficiles à comprendre si MSBuild ne vous est pas familier. Voici la structure de base d'un fichier projet :

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

  2. Importation de Microsoft.cpp.default.props, qui définit des propriétés de base et indépendantes des ensembles d’outils.

  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és dans Microsoft.cpp.props à l’étape suivante.

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

  5. Importation de toutes les feuilles de propriétés, y compris les fichiers .user. 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 ont toujours le dernier mot dans les règles d’évaluation de MSBuild, même s’ils apparaissent 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 les configurations Debug et Release. 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 le Gestionnaire de configuration 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 le Gestionnaire de propriétés. Vous pouvez l’ouvrir en sélectionnant Afficher> le Gestionnaire de propriétés ou >Afficher le Gestionnaire de propriétés> d’autres Windows, en fonction de vos paramètres. Le Gestionnaire de propriétés a des nœuds pour chaque paire configuration et plateforme dans le projet. Chacun de ces nœuds contient d’autres nœuds pour les feuilles de propriétés (fichiers .props) qui définissent des propriétés spécifiques pour cette configuration.

Capture d’écran de la fenêtre du Gestionnaire de propriétés.

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 fichier .user est une fonctionnalité héritée. Nous recommandons de la supprimer pour que les propriétés restent correctement groupées en fonction de la configuration/plateforme.