2009-09-23 6 views
20

En fait je viens autour d'un problème que je reçois le plus souvent en tant que j'aime:Comparer les configurations dans Visual Studio?

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

Et maintenant? Vous ouvrez les propriétés du projet, sélectionnez chaque élément dans l'arborescence et basculez pour et retour avec la zone de liste déroulante de la configuration en haut à gauche. En raison du fait que les deux configurations sont enregistrées dans un seul fichier, vous ne pouvez pas utiliser un simple outil Diff ou vous devez copier et coller les deux parties du fichier projet dans deux fichiers différents, les comparer et fusionner tout dans le fichier de projet.

N'y a-t-il pas une meilleure solution pour comparer différentes configurations dans un même projet?

+4

Alors que vous cherchez la solution après-pensée, voici ce que je fais pour éviter ce problème en premier lieu: Chaque fois que je change quelque chose dans la configuration, je sélectionne _Toutes les configurations_. C'est très bien pour la plupart des paramètres disponibles, en particulier pour des choses comme les paramètres Linker et Include. – OregonGhost

+2

Vous avez raison. Je vais déjà utiliser * Toutes les configurations *, mais parfois j'ai juste manqué et après un moment je viens de réaliser, que je ne suis pas capable d'obtenir toutes les configurations avec succès et ensuite le travail sacrément de comparer manuellement la configuration commence ... – Oliver

+1

Je suis tellement frustré par ce problème que je pense à écrire un outil pour analyser un fichier de projet et comparer différentes valeurs entre les différentes configurations. Avez-vous déjà trouvé une solution (je n'ai donc pas besoin d'écrire mon propre outil)? – aldo

Répondre

1

Je n'ai pas une solution parfaite à comparer dans un fichier projet ... mais pour ce que ça vaut, vous pouvez trouver utile de comparer le fichier projet en cours à la copie dans le contrôle source. Et puis, 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 a spécifié un nouveau projet ... donc je suppose qu'il n'est pas encore sous contrôle de source.

Voici donc une autre option: Copiez le fichier projet sous un autre nom, puis comparez les deux copies. Oui, ils seront identiques ... mais si vous utilisez un bon outil tel que Beyond Compare 2 qui vous permet d'aligner manuellement les sections, vous pouvez cliquer avec le bouton droit sur la première ligne de la section de débogage dans la fenêtre de gauche et sélectionnez Aligner Cliquez manuellement, puis cliquez avec le bouton droit sur la première ligne de la section de version dans la fenêtre de droite et sélectionnez Aligner manuellement. Voila ... il y a vos changements. :)

+0

Ce sont des options assez bonnes et j'essaie déjà de faire ces choses plus ou moins ces façons, mais ils se sentir mal à l'aise et laide. En particulier l'utilisation des outils de diff (même la version intégrée de VS pour le contrôle de source) montre juste que les outils sont déjà là. Tout ce dont nous avons besoin, c'est d'un mécanisme qui divise le fichier xml correctement pour afficher deux versions (par exemple, déboguer, relâcher) l'une à côté de l'autre et que vous n'avez pas à le faire manuellement. – Oliver

1

Il existe un programme appelé BeyondCompare3 qui est très bon marché. J'approuve rarement les produits, mais il devrait faire le travail pour vous ici. Utilisez l'option "Comparer la sélection au presse-papiers".

+0

Comme je l'ai déjà dit, j'essaie d'accomplir ces tâches avec un outil de comparaison externe. Mais il est juste si mal à l'aise d'ouvrir les fichiers xml bruts et d'aligner manuellement les deux sections, de sorte que l'outil diff compare ces deux sections. – Oliver

+0

Avez-vous utilisé cet outil spécifique? Il y a beaucoup de variation entre les outils de diff. Avec BeyondCompare 3, il vous suffit de sélectionner les zones à comparer. Il faut encore des efforts, mais pas autant que l'alignement. Si vous êtes à la recherche d'une réponse automagique "réparer ma configuration", vous devrez l'écrire vous-même. C'est un assez petit problème qu'il ne va pas y avoir des tonnes de gens qui écrivent un utilitaire, gratuit ou autre, pour y remédier. –

3

Pour ce que ça vaut maintenant, voici comment je gère le problème de changer une configuration et d'oublier de changer l'autre. Ce processus que j'utilise, cependant, a deux réserves: 1) cela fonctionne avec VS2010 et au-dessus; et 2) j'ai appris à éviter complètement ce problème.

Tout d'abord, je NE JAMAIS apporter des modifications à la page de propriétés du projet lui-même! Ils ont tendance à utiliser des conditions de construction qui provoque 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 je Comprennent à partir, par exemple:

  • my_macros.props - définitions macro communes spécifiques à mon structure de répertoire de la solution (read: 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é en utilisant doxygen pour créer ma documentation.

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

  • my_app_settings.props - Paramètres par défaut pour le framework de mon application. Par exemple, il définit le "répertoire de sortie" au MY_COMMON_OUTPUT_DIRECTORY mentionné précédemment.

  • my_app_settings_use_pch.props - Modifications supplémentaires de l'infrastructure de mon application qui utilise les en-têtes précompilés. Il ajoute simplement un commutateur de compilateur/DI_WANT_MY_PCH.

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

  • include_ogre_files.props - Paramètres permettant d'ajouter des ogre-libraries à mes projets.
  • include_sdl_file.props - Paramètre permettant d'ajouter des bibliothèques sdl à mes projets.

  • Vous devriez obtenir l'idée ...

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

Maintenant, quand j'ai besoin d'apporter une modification au projet, il me suffit de retourner 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 souhaitez uniquement affecter votre projet actuel, modifiez la feuille de propriétés $ (ProjectName). À moins que vous ne construisiez dans 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 source.

J'espère que cette aide,

+0

Cela semble être une très bonne idée. Je n'ai jamais travaillé avec des pages de propriétés auto-définies (car je ne les connaissais pas). Nut ça sonne comme sa valeur d'examiner de plus près. – Oliver

+0

Alors, comment cette solution a-t-elle été conçue pour vous? – jump

2

Je ne sais pas quand ils ont introduit, mais dans VS2015, vous pouvez à-moins sélectionnez « Configurations multiples ... » dans la liste déroulante configuration sur la propriété Pages écran. Vous pouvez ensuite sélectionner "Toutes les options" parmi les différentes sections et voir quels sont les paramètres qui diffèrent (ceux qui diffèrent). Ne vous montre pas les valeurs réelles - vous devez toujours changer pour cela - mais au moins vous pouvez repérer les différences rapidement.

Questions connexes