Utilizamos DesignSurface y todo ese buen IDesignerHost bondad en nuestro propio diseñador. Los formularios diseñados se conservan en nuestro propio formato a medida y todo funciona muy bien. También queremos exportar los formularios a un formato basado en texto (lo que hemos hecho ya que no es tan difícil).¿Existe alguna forma de convertir el código fuente en una CodeCompileUnit?
Sin embargo, también queremos importar ese texto de vuelta a un documento para el diseñador que implica volver a introducir el código del diseñador en una CodeCompileUnit. Desafortunadamente, el método de Parse no está implementado (por, sin duda, buenas razones). ¿Hay una alternativa? No queremos usar nada que no exista en una instalación .NET estándar (como las bibliotecas .NET instaladas con Visual Studio).
Mi idea actual es compilar el texto importado y luego crear una instancia del formulario y copiar sus propiedades y controles en el objeto de superficie de diseño, y simplemente capturar la nueva CodeCompileUnit, pero esperaba que hubiera una mejor manera. Gracias.
ACTUALIZACIÓN: Creo que algunos podrían estar interesados en nuestro progreso. Hasta ahora, no muy bien. Una breve descripción de lo que descubrí es que el método Parse no se implementó porque se consideró demasiado difícil, existen analizadores de código abierto que hacen el trabajo pero no están completos y por lo tanto no se garantiza que funcionen en todos los casos (NRefactory es uno de los del proyecto SharpDevelop, creo), y la copia de controles desde una instancia hasta el diseñador aún no funciona. Creo que esto se debe a que, aunque los controles se agregan a la instancia del formulario que la superficie del diseñador envuelve, la superficie del diseñador no está al tanto de su inclusión. Nuestro próximo intento es imitar cortar/pegar para ver si eso lo resuelve. Obviamente, esta es una gran solución desagradable, pero necesitamos que funcione para que podamos aprovechar el éxito y estar atentos a las alternativas.
Me encantaría saber la respuesta, también, pero mi temor es que no haya ninguno. – ZeroBugBounce
Realmente estoy buscando una solución para esto también. Me gustaría fusionar nuevas funciones al código existente fácilmente, de preferencia mediante el análisis de un archivo de código, y luego agregar nuevos miembros, después de lo cual crearía el script desde CodeCompileUnit fusionada. – Statement