Есть ли более простой способ объединить файлы Windows Forms.Designer?

Недавно мы перешли от TFS к Mercurial для нашей небольшой команды. Основной проект, над которым работают 3 человека, - это приложение Windows Forms на С#. Каждый раз, когда вы используете конструктор, даже для простых изменений, он много перестраивает и меняет файл .Designer. Если два человека работают над этим файлом, даже делая простые изменения, слияние является абсолютным кошмаром. Есть ли простой способ решить эту проблему? В TFS мы отключили параллельные изменения, поэтому у нас не было этой проблемы.

Ответ 1

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

Например, вы можете использовать Lock extension, написанный Мартином Гейслером, чтобы заблокировать файлы .Designer до следующего push, делая это избегайте одновременной модификации, тем самым избегая слияния.

Ответ 2

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

Разработчик WinForm (.NET), дизайнер Swing (Java) полагается на движок кода.

ASP.NET designer.cs содержит только поле поддержки, которое менее подвержено риску.

Поле поддержки WPF генерируется в obj/*. g.cs, которое не требуется для контроля источника, поэтому проблема слияния не возникает.

Ответ 3

Вот что я делаю:

  1. Скопируйте/Используйте .Desinger.cs из основной/развивающей ветки и откройте проект в VS
  2. Скопируйте весь проект (все файлы с .git) и оформите ветку your_feature и откройте проект в VS
    • теперь на этом этапе у вас должно быть 2 экземпляра VS (один на главной ветки и один на your_feature)
  3. Копирование элементов управления (Ctrl + C) (в режиме/режиме конструктора) с одного VS на другой

не идеальное решение, но очень помогает