23 votes

Comparer les configurations dans Visual Studio ?

En fait, j'en viens à un problème que je rencontre plus souvent qu'à mon tour :

Considérez ce qui suit : Vous venez de créer une nouvelle solution/un nouveau projet et vous commencez à créer/à ajouter tous les éléments dont vous avez besoin. Pendant ce temps, vous êtes toujours en route dans la configuration de débogage. Vous apportez des modifications à votre configuration (dans les projets C++ en particulier le compilateur, les paramètres du linker) et à la fin de la journée vous voulez juste passer en mode release pour faire un build final et que se passe-t-il ? Vous obtenez de nombreux messages d'erreur concernant des définitions manquantes, des bibliothèques liées, des définitions de préprocesseur, des en-têtes précompilés, etc.)

Et maintenant ? Vous ouvrez les propriétés du projet, vous sélectionnez chaque élément dans l'arborescence et vous passez de l'un à l'autre à l'aide de la boîte combo de la configuration en haut à gauche.

Étant donné que les deux configurations sont sauvegardées dans un seul fichier, vous ne pouvez pas utiliser un simple outil de différenciation ou vous devez copier et coller les deux parties du fichier de projet dans deux fichiers différents, les comparer et tout fusionner à nouveau dans le fichier de projet.

N'existe-t-il pas une meilleure solution pour comparer différentes configurations au sein d'un même projet ?

5voto

guysherman Points 581

Je ne sais pas quand ils l'ont introduit, mais dans VS2015 au moins, vous pouvez sélectionner "Configurations multiples..." dans la liste déroulante de configuration sur l'écran des pages de propriété. Vous pouvez alors sélectionner "All Options" dans les différentes sections et voir quels paramètres diffèrent (ceux qui diffèrent disent ). Cela ne vous montre pas les valeurs réelles - vous devez toujours passer d'une section à l'autre pour cela - mais au moins vous pouvez repérer les différences rapidement.

4voto

jump Points 21

Pour ce que cela vaut, voici comment je gère le problème de changer une configuration et d'oublier de changer l'autre. Ce processus que j'utilise comporte toutefois deux mises en garde : 1) il fonctionne avec VS2010 et les versions supérieures ; et 2) j'ai appris à éviter complètement ce problème.

Tout d'abord, je JAMAIS apporter des modifications à la page de propriétés du projet lui-même ! Ils ont tendance à utiliser des conditions de construction qui causent ce problème en premier lieu. Au lieu de cela, j'ai toujours mon "Property Manager" ouvert à côté de mon "Solution Explorer".

Deuxièmement, j'ai plusieurs feuilles de propriétés "prédéfinies" dans un sous-dossier appelé common.properties que j'inclus, par exemple :

  • my_macros.props - définitions de macros communes spécifiques à la structure des répertoires de ma solution (lire : framework). Par exemple, j'ai une définition appelée MY_COMMON_OUTPUT_DIRECTORY qui est égale à $(SolutionDir)bin\$(Configuration)\$(ProjectName).

  • my_dox_settings.props - Paramètres spécifiques aux projets doxygen. Oui, je crée un projet séparé utilisant doxygen pour créer ma documentation.

  • my_test_settings.props - Paramètres spécifiques à mon cadre de test unitaire. Encore une fois, un projet séparé pour les tests unitaires. Ajoute un événement post-construction qui exécute l'exécutable compilé.

  • my_app_settings.props - Paramètres par défaut pour le cadre de mon application. Par exemple, il définit le "répertoire de sortie" comme étant MY_COMMON_OUTPUT_DIRECTORY.

  • my_app_settings_use_pch.props - Changements supplémentaires au cadre de mon application qui utilise des en-têtes précompilés. Il ajoute simplement un commutateur de compilation /DI_WANT_MY_PCH.

  • include_boost_files.props - Paramètres pour ajouter les bibliothèques boost à mes projets.

  • include_ogre_files.props - Paramètres pour ajouter les bibliothèques ogre à mes projets.

  • include_sdl_file.props - Paramètre pour ajouter les bibliothèques sdl à mes projets.

  • Vous devriez comprendre...

Ensuite, je crée une NOUVELLE feuille de propriétés vierge et je l'ajoute également. Je l'appelle généralement $(ProjectName).props [NOTE : assurez-vous de développer la macro vous-même] et je l'ajoute via le gestionnaire de propriétés en tant que tout dernier élément.

Désormais, lorsque j'ai besoin d'apporter une modification au projet, il me suffit de passer au gestionnaire de propriétés et de modifier la feuille de propriétés appropriée. Gardez à l'esprit que cela affecte tous les projets qui utilisent cette feuille de propriétés. Si vous ne voulez affecter que votre projet actuel, modifiez la feuille de propriétés $(ProjectName). À moins que vous ne prévoyiez des conditions (que je n'aborderai pas), un changement affecte de nombreuses configurations (et projets).

Je vérifie même mon répertoire common.properties dans le contrôle de la source.

J'espère que cela vous aidera,

1voto

Philip Davis Points 258

Je n'ai pas de solution parfaite pour comparer à l'intérieur d'un fichier de projet... mais pour ce que ça vaut, vous pourriez trouver utile de comparer le fichier de projet actuel à la copie dans le contrôle de source. Ainsi, lorsque vous voyez une valeur modifiée dans une section, vous pouvez rapidement voir si cette valeur est également modifiée dans l'autre section.

Mais votre question précise qu'il s'agit d'un nouveau projet... je suppose donc qu'il n'est pas encore dans le contrôle des sources.

Voici donc une autre option : Copier le fichier du projet sous un autre nom et comparer les deux copies. Oui, elles seront identiques... mais si vous utilisez un bon outil comme Beyond Compare 2 qui vous permet d'aligner manuellement les sections, vous pouvez faire un clic droit sur la première ligne de la section debug dans la fenêtre de gauche et sélectionner Align Manually (Aligner manuellement), puis faire un clic droit sur la première ligne de la section release dans la fenêtre de droite et sélectionner Align Manually (Aligner manuellement). Voila... voilà vos modifications :)

1voto

Russell Steen Points 4081

Il existe un programme appelé BeyondCompare3 qui est très bon marché. Je recommande rarement des produits, mais il devrait faire l'affaire pour vous. Utilisez l'option "Comparer la sélection au presse-papiers".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X