2009-10-16 2 views
4

При создании новых проектов Visual Studio C++ существует два способа: либо запустить мастер, либо затем болезненно изменить все необходимые настройки в проекте или просто скопировать и существующий проект, переименовать все и добавить в него файлы.Есть ли инструмент для обнаружения проектов Visual Studio с повторяющимися идентификаторами GUID?

Второй вариант отличный, за исключением того, что файл .vcproj хранит GUID проекта. Этот GUID используется для отслеживания зависимостей проекта и проекта запуска, когда два или более проектов находятся в одном решении. Если какие-либо два проекта в одном решении имеют одинаковые GUID, могут возникнуть проблемы - зависимости теряются, а стартовый проект сбрасывается при следующей перезагрузке.

Очевидно, что существует необходимость в инструменте, который сканирует поддерево файловой системы и обнаруживает проекты с идентичными идентификаторами GUID здесь. Прежде, чем я начну писать один ... есть ли для этого готовый инструмент?

+0

или еще лучше ... инструмент, который позволяет копировать визуальный студийный проект и исправить все Guid-ых года, имена и местоположение – Toad

+0

Поскольку идентификаторы GUID уникальны, вы можете безопасно сделать поиск и замену всех скопированных файлов. Если это похоже на GUID проекта, это _is_ GUID проекта. – MSalters

+0

Итак, это то, что происходило в моем решении, с пятнадцатью копируемыми решениями ... Когда я хотел что-то искать (найти все ссылки) в одном проекте, в результате я получил результат поиска по всем моим проектам ... I предположим, что этот GUID, который идентифицирует каждый проект в решении, является виновником. И я бегаю через это сейчас, почти через год, когда на самом деле не ищу его :) Ницца. –

ответ

1

Вы можете написать инструмент относительно быстро. Я сделал это для своего работодателя, но они скупы с кодом. Обнаружение GUID «легко» при использовании регулярного выражения.

  1. Проверьте структуру каталогов на интересующие вас файлы. Держите их пути в списке в памяти.

  2. Открыть каждый файл, считывая все содержимое в память.

  3. Найти все GUID с помощью обычного выражения, которое вы создали.

  4. Для каждого найденного GUID проверьте, есть ли у вас уже добавленный GUID в словаре - словарь сопоставляет старый GUID с новым GUID.

    1. Если у вас уже есть замена, замените все экземпляры Guid в тексте.

    2. Если у вас нет заметок, сгенерируйте их, сохраните их в словаре и затем замените все экземпляры на новый.

  5. Записать измененное содержимое в файл.

Это длинный и короткий от него. Надеюсь, это помогло.

0

Вы можете попробовать поиграть с этим инструментом. Он предназначен для слияния/переустановки решений, но в качестве бонуса он может обнаруживать и восстанавливать повторяющиеся подсказки по нескольким решениям/проектам.

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

Смежные вопросы