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

Сравнить конфигурации в Visual Studio?

На самом деле я сталкиваюсь с проблемой, которую я чаще получаю, поскольку мне нравится:

Рассмотрим следующее: Вы только что создали новое решение/проект и начали создавать/добавлять все необходимое. Пока вы это делаете, вы всегда находитесь в рамках конфигурации отладки. Вы вносите изменения в свою конфигурацию (в проектах на С++, особенно в компиляторе, настройках компоновщика), и в конце дня вы просто хотите перейти в режим выпуска, чтобы сделать окончательную сборку и что происходит? У вас появилось много сообщений об ошибках в отношении отсутствующих определений, связанных библиотек, определений препроцессора, предварительно скомпилированных заголовков и т.д.)

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

В связи с тем, что обе конфигурации сохраняются в одном файле, вы также не можете использовать простой Diff-Tool, или вам нужно скопировать и вставить обе части из файла проекта в два разных файла, сравнить их и объединить все обратно в файл проекта.

Нет ли лучшего решения для сравнения различных конфигураций внутри одного проекта?

4b9b3361

Ответ 1

Для чего это стоит, вот как я справляюсь с проблемой изменения одной конфигурации и забываю изменить другую. Однако этот процесс, который я использую, имеет два оговорки: 1) он работает с VS2010 и выше; и, 2) я научился вообще избегать этой проблемы.

Во-первых, я НИКОГДА не вношу изменений на страницу свойств проекта! Они, как правило, используют условия построения, которые в первую очередь создают эту проблему. Вместо этого у меня всегда есть мой "Property Manager", открытый у моего "Обозревателя решений".

Во-вторых, у меня есть несколько "предварительно определенных" листов свойств в подпапке с именами common.properties, которые я включаю, например:

  • my_macros.props - общие макроопределения, специфичные для моей структуры каталога (read: framework). Например, у меня есть определение MY_COMMON_OUTPUT_DIRECTORY, которое равно $(SolutionDir) bin\$(Конфигурация)\$(ProjectName).

  • my_dox_settings.props - Настройки, специфичные для проектов doxygen. Да, я создаю отдельный проект с использованием doxygen для создания моей документации.

  • my_test_settings.props - Настройки, специфичные для моей инфраструктуры модульного тестирования. Опять же, отдельный проект для модульных тестов. Добавляет событие post-build, выполняющее скомпилированный исполняемый файл.

  • my_app_settings.props - Настройки по умолчанию для моей инфраструктуры приложений. Например, он устанавливает "выходной каталог" в ранее упомянутую MY_COMMON_OUTPUT_DIRECTORY.

  • my_app_settings_use_pch.props - дополнительные изменения в моей инфраструктуре приложения, в которой используются прекомпилированные заголовки. Он просто добавляет переключатель компилятора /DI _WANT_MY_PCH.

  • include_boost_files.props - настройки добавления библиотек boost в мои проекты.

  • include_ogre_files.props - Настройки добавления библиотек ogre в мои проекты.
  • include_sdl_file.props - настройка добавления sdl-библиотек в мои проекты.

  • Вы должны получить идею...

Затем я создаю новый пустой лист свойств и добавлю его. Я обычно называю это $(ProjectName).props [ПРИМЕЧАНИЕ: обязательно развернуть макрос самостоятельно], а затем добавить его через менеджер свойств как самый последний элемент.

Теперь, когда мне нужно внести изменения в проект, я просто перехожу к менеджеру свойств и изменяю соответствующий лист свойств. Имейте в виду, что это влияет на все проекты, которые используют этот лист свойств. Если вы хотите повлиять только на текущий проект, измените свойство свойства (ProjectName). Если вы не создадите условия (в которые я не войду), одно изменение затрагивает многие конфигурации (и проекты).

Я даже проверяю свой каталог common.properties на источник-контроль.

Я надеюсь, что это поможет,

Ответ 2

Я не уверен, когда они это представили, но по крайней мере в VS2015 вы можете выбрать "Несколько конфигураций..." в раскрывающемся списке конфигурации на экране "Страницы свойств". Затем вы можете выбрать "Все параметры" из разных разделов и посмотреть, какие параметры отличаются (те, которые отличаются друг от друга). Не показывает вам фактические значения - вам все равно придется переключаться туда и обратно, но по крайней мере вы можете быстро выявить различия.

Ответ 3

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

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

Итак, вот еще один вариант: скопируйте файл проекта на другое имя, а затем сравните две копии. Да, они будут одинаковыми... но если вы используете хороший инструмент, такой как Beyond Compare 2, который позволяет вам вручную выравнивать разделы, тогда вы можете щелкнуть правой кнопкой мыши по первой строке раздела отладки в левом окне и выбрать Align Вручную, а затем щелкните правой кнопкой мыши по первой строке раздела выпуска в правом окне и выберите "Выровнять вручную". Вуаля... твои изменения.:)

Ответ 4

Там есть программа под названием BeyondCompare3, которая очень дешевая. Я редко соглашаюсь с продуктами, но он должен выполнить эту работу для вас здесь. Используйте опцию "Сравнить выбор в буфер обмена".