Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

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

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

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

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

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

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

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

Ответ 3

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

Ответ 4

Какую версию Visual Studio вы видите?

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

Ответ 5

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

Ответ 6

Думаю, я нашел причину этого перетасовки. По крайней мере, в VS2008.

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

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

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

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

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

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