2010-10-18 9 views
10

¿Se pueden crear aplicaciones de Silverlight (el archivo .xap, la página de prueba.html, los recursos de contenido junto a un ClientBin, las configuraciones del navegador, etc.) usando solo System.CodeDom desde una aplicación .NET regular? Lo que significa que tengo una consola o una aplicación de winforms que crea aplicaciones de Silverlight. ¿Esto es posible con System.Codedom?CodeDom y Silverlight

He buscado alto y bajo y no he encontrado ninguna información sobre esto.

+0

Guau, esa es una pregunta bastante interesante. ¿Has probado algo tú mismo? No puedo pensar en una razón por la que no sería posible, pero no estoy seguro. Supongo que una cosa importante es asegurarse de que el ensamblado generado haga referencia a las versiones correctas de los ensamblajes de la plataforma Silverlight (mscorlib, System.Windows, etc.) y no a sus contrapartes de escritorio. Una aplicación Silverlight no es más que una colección de ensamblajes y un archivo AppManifest.xaml en un archivo zip con una extensión .xap. Tengo curiosidad sobre cuál es el escenario que te lleva a querer hacer esto? – KeithMahoney

+0

Gracias Keith. He estado buscando en MSBuild la misma opción, pero la gente parece sugerir que MSBuild es exagerado y CodeDom.Compiler es suficiente para situaciones normales. Simplemente no sé si ese es el caso de Silverlight. Un escenario sería un creador de tarjetas de eGreeting en el que hay mucha personalización (sé que esto podría tener un enfoque diferente, pero por razones de argumentación, digamos que así es como debe ser): un sitio web central de ASP.NET eso toma un montón de parámetros diferentes de la entrada del usuario y el resultado es una aplicación compilada de Silverlight. Haz esto muchas veces – Stan

+0

Para su escenario, le sugiero que tome un enfoque alternativo, p. una aplicación genérica de Silverlight que descarga dinámicamente todos los datos de personalización en tiempo de ejecución. Si decide ir a la ruta de generación de código: me gustaría poder darle una mejor respuesta que "no hay una razón obvia por la que no debería funcionar". – KeithMahoney

Respuesta

4

Aunque esto será un desafío, probablemente debería ser posible. Si nos fijamos en lo que hace el propio marco, hay algunas opciones.

  • Por ejemplo, la clase Regex utiliza System.Reflection.Emit para compilar sus expresiones edición regular;

  • XmlSerializer usa System.CodeDom para generar conjuntos para serializar y deserializar XML;

  • ASP.Net llama al compilador C# (csc.exe) para compilar páginas ASPX (y todas las demás partes de la aplicación ASP.Net) en un ensamblaje.

Estas son todas las opciones para crear un ensamblaje válido, ordenado desde muy complejo hasta relativamente factible.

Y con respecto a su parte de Silverlight de la pregunta. Esto debería ser simplemente un caso de creación de un proyecto válido. Probablemente la forma más fácil de hacerlo es crear el proyecto Silverlight más simple que se te ocurra (sin contenido) e intentar emularlo con una de las tres opciones. Si tienes eso en ejecución, entonces agrega partes gradualmente hasta que obtengas lo que necesitas.

Cuestiones relacionadas