Рекомендации по поддержанию файлов проекта Visual Studio vcproj в системе управления версиями

StackOverflow https://stackoverflow.com/questions/611925

Вопрос

Microsoft Visual Studio использует XML для сохранения своих .vcproj файлы проекта.Итак, различные файлы XML-проекта следует будьте легки.

К сожалению, при изменении любого из свойств файла проекта Visual Studio настаивает на случайном перетасовании XML-узлов файла проекта!Это делает текстовое разделение и объединение изменений в файлах проекта практически невозможным.Изменение одной настройки компилятора может заставить мой инструмент visual diff думать, что я изменил 50% строк в файле!Я даже пробовал некоторые инструменты XML diff, но они просто показывают более структурированное представление того же беспорядка.

Есть ли у кого-нибудь какие-либо предложения по поддержанию .vcproj файлы в системе управления версиями?Или способ убедить Visual Studio нет измените порядок расположения XML-узлов в .vcproj файл?

(Я также исследовал использование таких инструментов, как CMake, для генерации .vcproj файлы из более удобного текстового файла, но у CMake есть свои проблемы.)

Это было полезно?

Решение

Кажется, это всплывает время от времени.

Возможно, это проблема, назревшая для плагина или другого инструмента нормализации.

Это был бы отличный побочный бизнес, пока MS не решит это исправить.Тогда вам не повезло - если, конечно, они не предложат купить ваш IP.

Кто-нибудь хочет запустить проект с открытым исходным кодом или коммерческий продукт?Я в игре.

Я мог бы попробовать использовать автономный инструмент нормализации, а затем посмотреть, смогу ли я превратить его в плагин.

Другие советы

Сейчас мы наблюдаем это здесь, на работе, с файлами проекта, где конфигурации переупорядочены на компьютерах нескольких пользователей, и это очень расстраивает...

*Примечание: Мы все используем VS 2008 Pro, а не Team

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

Для одной группы конфигурации упорядочены по платформе, затем по Конфигурации:

  • Отладка|Win32
  • Отладка|x64
  • Релиз |Win32
  • Версия|x64
  • Отладка DX11|Win32
  • Отладка DX11|x64
  • Выпуск DX11|Win32
  • Версия DX11|x64
  • ...

Для другой группы конфигурации упорядочиваются по Конфигурации, затем по платформе:

  • Отладка|Win32
  • Релиз |Win32
  • Отладка DX11|Win32
  • Выпуск DX11|Win32
  • Отладка|x64
  • Версия|x64
  • Отладка DX11|x64
  • Версия DX11|x64
  • ...

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

Это та же самая проблема, с которой вы все сталкиваетесь?Если это так, я надеюсь, что этот шаблон поможет найти решение, которое не требует выполнения макроса / дополнительного этапа diff...

Это должна быть какая-то настройка или побочный эффект нажатия на что-то, поскольку она на 100% воспроизводима на каждой из этих машин.Даже если это что-то глупое, например, какой вариант вы выберете для своего начального макета среды (VC ++, VB, общая разработка и т. Д.)

Я использую WinMerge в качестве моего diff-инструмента и включил обнаружение перемещенных блоков. Это не совсем решает проблему, но делает визуализацию различий более терпимой.

В какой версии Visual Studio вы это видите?

Я много работаю с файлами .vcproj (мы поддерживаем версии файлов проекта для наших библиотек в нескольких версиях Visual Studio, и я всегда анализирую и объединяю их), но я никогда не видел такого поведения.

Моя команда в Adobe видела то же самое в vs2008. Проект win32 / win64, представляющий собой простой Debug / Release, предоставляет вам 4 конфигурации и случайное перемешивание. Несколько человек пытались выяснить, когда и почему devstudio переупорядочивает, но в настоящее время мысль о том, что ключ сортировки - это хэш ключевого слова, а значит, полуслучайный. Мы отказались и в обзорах кода просто суммируем "реальный" изменения.

Я думаю, что нашел причину этой случайности. По крайней мере, в 2008 году.

Если вы установите компиляторы x64, VS упорядочит проекты следующим образом:

Debug|Win32
Debug|x64
Release|Win32
Release|x64

Если вы этого не сделаете, он закажет их следующим образом:

Debug|Win32
Release|Win32
Debug|x64
Release|x64

Поэтому убедитесь, что на всех ваших пирах установлен один и тот же набор компиляторов, чтобы он не перемешивался.

Протестировал его, и это поведение представляется воспроизводимым.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top