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 :
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.)Feuilles de propriétés
fichier
.vcxproj
. (Ce fichier peut remplacer les paramètres de feuille de propriétés et par défaut.)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 :
Propriétés fondamentales du projet, qui ne sont pas exposées dans l’IDE.
Importation de , qui définit des propriétés indépendantes de l’ensemble d’outils
Microsoft.cpp.default.props
de base.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.Importation de
Microsoft.cpp.props
, qui définit la plupart des valeurs par défaut du projet.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.Le reste des propriétés de configuration du projet. Ces valeurs peuvent remplacer celles définies dans les feuilles de propriétés.
É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.
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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour