2009-10-16 8 views
4

Lors de la création de nouveaux projets Visual Studio C++, il existe deux méthodes: soit exécuter l'assistant, puis modifier tous les paramètres nécessaires dans le projet ou simplement copier et créer un projet, renommer tout et ajouter des fichiers.Existe-t-il un outil pour détecter les projets Visual Studio avec des GUID en double?

La deuxième variante est excellente sauf que le fichier .vcproj stocke un GUID de projet. Ce GUID est utilisé pour suivre les dépendances de projet et le projet de démarrage lorsque deux ou plusieurs projets sont dans une solution. Si deux projets dans une solution ont des GUID identiques, des problèmes peuvent survenir: les dépendances sont perdues et le préma de démarrage est réinitialisé lors du rechargement de la prochaine solution.

De toute évidence, il existe un besoin pour un outil qui analyserait le sous-arbre du système de fichiers et détecterait les projets avec des GUID identiques ici. Avant de commencer à en écrire un ... y a-t-il un outil prêt pour cela?

+0

ou mieux encore ... un outil qui permet de copier un projet studio visuel et corriger tout est guid, noms et emplacements – Toad

+0

Depuis GUIDs sont uniques, vous pouvez faire en toute sécurité une recherche et remplacer tous les fichiers copiés. Si cela ressemble au GUID du projet, c'est le GUID du projet. – MSalters

+0

Donc, voici ce qui se passait dans ma solution, avec quinze solutions copiées ... Quand je voulais chercher quelque chose (Trouver toutes les références) dans un projet, j'ai obtenu un résultat de recherche sur tous mes projets ... suppose que ce GUID qui identifie chaque projet dans une solution est coupable. Et je cours maintenant, après presque un an, quand je ne le cherche pas vraiment :) –

Répondre

1

Vous pouvez écrire l'outil relativement rapidement. Je l'ai fait pour mon employeur, mais ils sont avares de code. La détection d'un GUID est "facile" lors de l'utilisation d'une expression régulière.

  1. Analyser la structure du répertoire pour les fichiers d'intérêt. Gardez leurs chemins dans une liste en mémoire.

  2. Ouvrez chaque fichier en lisant le contenu entier en mémoire.

  3. Trouvez tous les GUID avec l'expression régulière que vous avez créée.

  4. Pour chaque GUID rencontré, vérifiez si vous avez déjà un GUID de remplacement dans un dictionnaire - le dictionnaire mappe l'ancien GUID au nouveau GUID.

    1. Si vous avez déjà un remplacement, remplacez toutes les instances du Guid dans le texte.

    2. Si vous n'avez pas de remplacement, créez-en un, stockez-le dans le dictionnaire, puis remplacez toutes les instances par la nouvelle.

  5. Écrivez le contenu modifié du fichier.

C'est long et à court de celui-ci. J'espère que cela a aidé.

0

Vous pouvez essayer de jouer avec cet outil. Il est conçu pour fusionner/déplacer des solutions, mais en prime il peut détecter et régénérer des guids en double dans plusieurs solutions/projets.

http://code.google.com/p/merge-solutions/

Questions connexes