2009-03-21 13 views
7

Estoy tratando de crear una biblioteca .Net con pocos Controladores, y quiero reutilizarlos en Múltiples proyectos web.Incrustar Ver archivos como recurso dentro de Binario

Estoy a la mitad, pero el problema que tengo es que, siempre que agregue la biblioteca al nuevo proyecto web, necesito copiar todos los archivos de vista correspondientes por separado al nuevo proyecto. Cada vez que actualizo la biblioteca, necesito repetir los pasos nuevamente.

De alguna forma, puedo incrustar Ver archivos dentro de dll como recurso, y pasarlo a la función "Ver()" como un recurso incrustado.

Lo que quiero lograr es, quiero poner el controlador y los correspondientes puntos de vista dentro del archivo DLL sola, de modo que pueda distribuir fácilmente/gestión de la biblioteca como un solo archivo DLL

(Ida Ya he encontrado , está creando una clase de vista personalizada con IView Interface y Renderizar la salida directamente escribiendo en HTML Output Writer, pero prefiero usar el archivo View.)

Respuesta

7

Phil Haack acaba de publicar una blog post hace unos días que probablemente te ayude; Está usando una base de datos para almacenar las vistas y ruby ​​para procesarlas, pero creo que podría tomar su prototipo y hacerlo funcionar para las vistas almacenadas en un ensamblaje separado con bastante facilidad.

Solo un vistazo rápido a través del código y creo que la salsa mágica va a implementar VirtualPathProviderViewEngine (Consulte la clase "RubyViewEngine" por ejemplo) e insertando su ViewEngine en ViewEngines.Engines Collection (vea Global.asax.cs) .

0

El tipo WebFormView eventualmente llama a BuildManager.CreateInstanceFromVirtualPath. No hay sobrecarga u otra función en BuildManager para tomar entrada de una secuencia en lugar de una ruta virtual. Por lo tanto, si no desea implementar IView usted mismo, deberá desempaquetar los archivos en el disco para que BuildManager pueda compilarlos. Todavía podría distribuir su archivo DLL como un único archivo, pero los archivos aspx deben ser producidos para que BuildManager los compile. Vea BuildManager help para más detalles.

0

Salida del motor ASP.NET MVC Ver usando VB.NET proyecto XML literales en CodePlex http://vbmvc.codeplex.com

Es un motor de vista personalizada concebido originalmente por Dmitry Robsman, que es un PUM para ASP.NET de Microsoft . Cada vista es una clase VB.NET y el Espacio de nombres (en lugar de la ruta del archivo) se usa para conectar Vistas a Controladores. Es bastante sencillo copiar el contenido de sus archivos de vista ASPX en los literales XML en estas clases de VB. Y como clases, se compilan en el ensamblado sin ningún esfuerzo adicional.

Si sus controladores son C#, lo más probable es que termine con 2 DLL, pero Scott Hanselman tiene una publicación de blog sobre cómo obtener C# y VB para vivir juntos en el mismo ensamblado. http://www.hanselman.com/blog/MixingLanguagesInASingleAssemblyInVisualStudioSeamlesslyWithILMergeAndMSBuild.aspx

Cuestiones relacionadas