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

Автоматический регенерировать файлы дизайнера

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

Обратите внимание, что это фактически удаляет строку, а не просто пустую строку.
Его нужно запускать из оболочки Bash, если у вас установлен 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

Ответ 3

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