Объединение файлов проекта / решения - это известная катастрофа среди разработчиков / администраторов SCM, выполняющих слияния в своих системах контроля версий.
Возьмем, к примеру, общий сценарий: разработка выполняется над проектом / решением в двух разных ветвях. Когда приходит время слиться с основной линией разработки, существует очень небольшое сходство между VCPROJ (и SLN).
Причина в том, что Visual Studio может изменить (и ИЗМЕНИТ) расположение различных XML-подобных элементов в этих файлах. Например, конфигурации Debug и Release могут менять порядок при каждой операции сохранения в файле proj. Это делает невозможным легкое включение изменений из каждой ветви разработки, даже если не учитывать автоматическое объединение.
Могу предположить, что Microsoft использует некоторую систему хеширования perl для хранения структур vcproj, поэтому рендеринг файлов после операции сохранения не упорядочен.
Сначала я хотел бы спросить: кто-нибудь нашел какой-нибудь элегантный способ обойти это?
Во-вторых, я хотел бы сделать два предложения:
Попросите Microsoft переопределить вышеуказанные файлы и ограничить их жестким упорядочением элементов.
найти инструмент (или написать один), который сортирует файлы vcproj (формат xml) и sln (формат sln ...) по алфавиту, рекурсивно (все элементы внутри элементов и т. Д.). Использование этого инструмента как для исходных, так и для целевых файлов позволит легко указать (и объединить) изменения, надеясь, что Visual Studio прочитает отсортированный, объединенный проект или файл SLN.
Любые другие идеи и мысли приветствуются.