2009-04-17 10 views
9

Estoy actualizando un proyecto de Visual Studio 2003 a 2008 y deseo generar automáticamente los archivos XXX.Designer.cs y actualizar el correspondiente XXX.cs original.¿Cómo convertir automáticamente clases VS2003 a archivos Designer.cs parciales?

¿Alguna forma automática de hacerlo?

ACTUALIZACIÓN: me refiero a WinForms. Por supuesto, sé que el viejo estilo funciona pero estoy buscando una manera de ir al nuevo estilo sin hacerlo a mano.

+0

No veo dónde dijo si se trata de un proyecto ASP.NET o un proyecto de Windows Forms. Por favor, indique cuál. –

+2

Más respuestas están en http://stackoverflow.com/questions/669540/split-old-net-code-into-designer-partial-class – reinierpost

Respuesta

0

No estoy seguro de entender, pero lo adivinaré.

¿Era este un proyecto ASP.NET en VS2003? ¿Tenía archivos .Designer.cs en él? ¿Es el caso de que hayas realizado una actualización, pero descubres que no tienes archivos .Designer.cs ahora?

Si es así, puede haber cambiado inadvertidamente su Proyecto de aplicación web en un "proyecto" de sitio web. Este tipo de "proyecto" se introdujo en VS2005, por lo que aún no lo habría visto. Estos no son proyectos reales (ningún archivo .csproj) y tienen muchas otras diferencias.

De lo contrario, si su proyecto no solía tener archivos .Designer.cs, ¿por qué los quiere ahora?

En general, la manera de crear archivos de diseñador es abrir el archivo en un diseñador, espere unos momentos para que el diseñador termine lo que está haciendo (actualizando la pantalla, etc.); y luego guardando el archivo. Posiblemente tenga que "tocar" el original para que el diseñador reevalúe las cosas.

+2

VS2003 no tenía archivos .designer.cs porque .net 1.1 no lo hizo apoyar clases parciales. Por lo tanto, simplemente pone declaraciones de control ocultas dentro de una región en el código subyacente. FerranB está pidiendo una forma automática de mover estas declaraciones a un archivo de diseñador. –

+0

¡Ha pasado tanto tiempo desde que utilicé VS2003 que había olvidado! En ese caso, abrir en Designer, luego guardarlo lo hará manualmente. Puede haber una manera de automatizar eso, ya sea a través de macros o una extensibilidad VS más fuerte. Las macros probablemente lo hagan. –

+0

no, ni VS2005 ni VS2008 mueven automáticamente las cosas a archivos .designer simplemente abriendo y guardando. –

1

Las clases originales seguirán funcionando, incluso con el diseñador de Visual Studio. El código que el VS pone en las clases de Designer está destinado simplemente a eliminar el "ruido" del diseñador en un archivo separado para que pueda centrarse en el código no visual de su clase.

Una vez que migre el proyecto a VS2008 con el asistente, puede abrir sus formularios en VS y continuar editándolos como lo hacía antes. Cualquier formulario nuevo que cree obtendrá los archivos de respaldo de Designer.

1

Tuvimos este problema.

Básicamente, el archivo de diseñador debe contener nada más que un conjunto de declaraciones de objeto (es decir, los objetos en el formulario) y la llamada InitializeComponent(). Si has hecho algún trabajo elegante en tu constructor, puede que también esté allí.

Simplemente cree un archivo llamado MyForm.Designer.cs y agréguelo al proyecto. VS2008 lo colocará automáticamente debajo de MyForm.cs. Desde allí, si crea el encabezado de clase parcial y el espacio de nombres, luego copia a través de todas las declaraciones y llama a Initializecomponent en el archivo de diseñador, entonces funcionará.

Pero porque si tuviera que hacerlo, la gente edita el componente initialize y también edita el constructor predeterminado, VS2005 y 2008 no podrían actualizar automáticamente estos archivos ya que podrían ocurrir todo tipo de cosas extrañas. Supongo que, desde el punto de vista de un proyecto, ¿qué beneficio crees que tu código de trabajo derivará de la separación?

3

Hay una macro flotando que hace esto. Lo he usado y funciona muy bien. Comience por mirar Nathan Jones Blog. Si no tiene mucha suerte, descargue un archivo comprimido de la fuente de macro (publiqué) desde VSCONVERT - PasteBin

+0

El enlace expiró en fileFactory. – Matthieu

+0

Ok, se cambió el código fuente a pastebin. No utilicé esta macro desde 2006, 2008. – ja72

Cuestiones relacionadas