Как автоматически преобразовать классы VS2003 в частичные файлы Designer.cs?

Я обновляю проект с Visual Studio 2003 до 2008 и хочу автоматически создавать XXX.Designer.cs файлы и обновлять соответствующий XXX.cs исходный.

Какой-нибудь автоматический способ сделать это?

ОБНОВЛЕНИЕ: я имею в виду WinForms. Конечно, я знаю, что старый стиль работает, но я ищу способ перейти к новому стилю, не делая это вручную.


person FerranB    schedule 17.04.2009    source источник
comment
Я не понимаю, где вы сказали, это проект ASP.NET или проект Windows Forms. Укажите, пожалуйста, какой.   -  person John Saunders    schedule 18.04.2009
comment
Дополнительные ответы можно найти на странице stackoverflow.com/questions/669540/   -  person reinierpost    schedule 23.09.2009


Ответы (4)


Есть плавающий макрос, который делает это. Я использовал его, и он отлично работает. Начните с просмотра Блог Натана Джонса. Если вам не повезло, загрузите zip-архив с исходным кодом макроса (я опубликовал) из VSCONVERT - PasteBin

person John Alexiou    schedule 06.09.2010
comment
Срок действия ссылки истек на fileFactory. - person Matthieu; 26.11.2013
comment
Хорошо, изменил исходный код на pastebin. Я не использовал этот макрос с 2006, 2008 гг. - person John Alexiou; 26.11.2013

Исходные классы будут продолжать работать - даже с дизайнером Visual Studio. Код, который VS помещает в классы Designer, просто предназначен для удаления дизайнерского «шума» в отдельный файл, чтобы вы могли сосредоточиться на невизуальном коде в вашем классе.

После переноса проекта на VS2008 с помощью мастера вы можете открывать свои формы в VS и продолжать редактировать их так же, как и раньше. Любые новые формы, которые вы создаете, получат файлы поддержки Designer.

person Paul Alexander    schedule 18.04.2009

У нас была эта проблема.

В основном файл конструктора не должен содержать ничего, кроме набора объявлений объектов (то есть объектов в форме) и вызова InitializeComponent (). Если вы проделали какую-то причудливую работу над своим конструктором, он тоже может быть там.

Просто создайте файл MyForm.Designer.cs и добавьте его в проект. VS2008 автоматически поместит его в MyForm.cs. Оттуда, если вы создадите заголовок частичного класса и пространство имен, а затем скопируете все объявления и вызов Initializecomponent в файл конструктора, тогда он будет работать.

Но поскольку, если бы вам пришлось, люди редактировали бы initializecomponent, а также редактировали конструктор по умолчанию, VS2005 и 2008 не могли автоматически обновлять эти файлы, поскольку могли произойти всевозможные странные вещи. Я предполагаю, с точки зрения проекта, какую пользу, по вашему мнению, принесет разделение вашего рабочего кода?

person Spence    schedule 18.04.2009

Я не уверен, что понимаю, но догадываюсь.

Был ли это проект ASP.NET в VS2003? Были ли в нем файлы .Designer.cs? Вы сделали обновление, но обнаружили, что у вас нет файлов .Designer.cs?

Если это так - вы могли случайно превратить свой проект веб-приложения в «проект» веб-сайта. Такой «проект» появился в VS2005, так что вы его еще не видели. Это не настоящие проекты (нет файла .csproj), и у них есть много других отличий.

В противном случае, если в вашем проекте раньше не было файлов .Designer.cs, то зачем они вам сейчас нужны?

В общем, способ создания файлов дизайнера состоит в том, чтобы открыть файл в дизайнере, подождать несколько секунд, пока дизайнер закончит то, что он делает (обновляет экран и т. Д.); а затем сохраните файл. Возможно, вам придется «прикоснуться» к оригиналу, чтобы дизайнер переоценил вещи.

person John Saunders    schedule 17.04.2009
comment
VS2003 не имел файлов .designer.cs, потому что .net 1.1 не поддерживал частичные классы. Таким образом, он просто помещает объявления управления, скрытые внутри области в коде. FerranB просит автоматизированный способ переместить эти объявления в файл дизайнера. - person Mauricio Scheffer; 18.04.2009
comment
Я так давно не использовал VS2003, что забыл! В этом случае при открытии в конструкторе и сохранении это будет сделано вручную. Может быть способ автоматизировать это либо с помощью макросов, либо с помощью более сильной расширяемости VS. Макросы, вероятно, сделают это. - person John Saunders; 18.04.2009
comment
нет, ни VS2005, ни VS2008 не перемещают объекты в файлы .designer автоматически, просто открывая и сохраняя их. - person Mauricio Scheffer; 18.04.2009
comment
(по крайней мере, с проектами ASP.NET) - person Mauricio Scheffer; 18.04.2009