Автоматически восстанавливать дизайнерские файлы - PullRequest
13 голосов
/ 31 мая 2011

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

В прошлом это не было проблемой, поскольку у нас были только20-30 форм.На данный момент у нас есть более 300 форм, что означает открытие одинакового количества дизайнеров в VS2010.

Итак, мой вопрос: знаете ли вы способ автоматизации этого процесса, чтобы все формы восстанавливались?

Я думал о макросе, который ищет дизайнерские файлы и открывает файл (максимум 25-50 файлов открываются, чтобы убедиться, что VS не потерпит крах), но я не смогчтобы это заработало.

Надеюсь, у кого-то есть предложение!

Ответы [ 3 ]

6 голосов
/ 05 января 2012

Единственный способ найти то, что вы хотите, - открыть дизайнер форм, добавить элемент управления и сохранить.Это восстановит код конструктора.Затем удалите вновь добавленный элемент управления, снова сохраните и закройте.

Обычно я добавляю кнопку, дважды щелкнув ее на панели инструментов.Это помещает кнопку в положение 0,0.

Я сделал это пару месяцев назад с проектом с примерно 100 формами и пользовательскими элементами управления.Вместо макроса, который использовался для файлов проекта, я записал временный макрос, затем запустил макрос для каждой формы / пользовательского элемента управления и проверил результаты.

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

2 голосов
/ 05 января 2012

Я также столкнулся с этой проблемой (см. Также: Принудительное использование WinForms для регенерации файлов .designer.cs ).

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

Обратите внимание, что это фактически удаляет строку, а не просто оставляет пустую строку.
Это должно бытьЗапустите из Bash Shell, если у вас установлен msysgit, эта оболочка в порядке.
В этом случае TextForeColor было удалением свойства.

#!/bin/bash
files=$(find . -type f -name '*.Designer.cs' -print0 | xargs -0 grep -l 'TextForeColor')
for file in $files
do
    echo $file
    sed '/TextForeColor/ d' $file >$file.tmp
    mv $file.tmp $file
done
0 голосов
/ 05 января 2012

Использовать наследование формы вместо сохранения изменений более 300 элементов управления.

...