2011-09-23 19 views
5

Tenemos un proyecto de controles que contiene muchos controles utilizados en todas nuestras aplicaciones. Hay muchas propiedades antiguas y muchas redundantes en estos controles, y casi ninguna de ellas tiene atributos especificados en ellas (como DefaultValue() en particular).Force WinForms para regenerar archivos .designer.cs

Como parte del esfuerzo para limpiarlos, hemos agregado atributos a las propiedades, y estamos buscando eliminar los redundantes.

Lo que nos gustaría hacer como parte de esto es limpiar el código generado del diseñador de winforms (los archivos xxxxxx.designer.cs y xxxxxx.designer.vb). Algunas de las propiedades son eliminación directa, para lo cual pudimos usar Grep y Sed para eliminar las líneas ofensivas, pero estamos buscando una forma de hacer que Visual Studio (o algo así) regenere los archivos.

Como tenemos cientos de formularios, no es posible abrirlos manualmente y modificarlos para hacer esto.

¿Alguien sabe de una manera de hacer esto?

Editar:

para aclarar, lo que quiero decir no es eliminar las propiedades de inmediato, sino aplicar el atributo DesignerSerializationVisibity() a ellos para decir que el diseñador no escribirlos. Luego, una vez que hayamos actualizado todos los archivos del diseñador, podemos eliminar las propiedades.

Ver también:

Automatic regenerate designer files

Respuesta

4

No es posible, no se puede conseguir el diseñador para analizar InitializeComponent() cuando contiene asignaciones de propiedad para las propiedades que se han eliminado o cambiado de nombre. Tiene que analizarlo antes de que pueda regenerar el código.

El único enfoque real es aplicar primero el atributo [DesignerSerializationVisibility] a la propiedad anterior, por lo que ya no se escribe la asignación de propiedades. A continuación, cargue cada formulario y realice una edición trivial para que vuelva a generar InitializeComponent(), ahora sin la asignación de propiedades. Entonces puedes eliminarlos. La edición directa del método podría ser más rápida.

+0

Lo que quise decir no fue eliminar las propiedades, sino aplicarles el atributo 'Browsable (False)' para indicarle al diseñador que no las escriba. Luego, una vez que hayamos actualizado todos los archivos del diseñador, podemos eliminar las propiedades. – Pondidum

+0

No, [Navegable] solo afecta la visibilidad en la ventana Propiedades. Realmente quieres [DesignerSerializationVisibity] para evitar escribir. –

+0

Gracias, pregunta actualizada para reflejar esto. – Pondidum

Cuestiones relacionadas