page net masterpage diseño create content aspx asp .net asp.net master-pages

.net - net - login master page aspx



¿Cuál es la mejor manera de compartir MasterPages en todos los proyectos? (7)

Del artículo ASP.Net Master Pages: Tips, Tricks and Traps de K. Scott Allen, en "Sharing Master Pages":

La primera alternativa es copiar archivos de páginas maestras compartidas en una sola ubicación en un servidor web IIS. Cada aplicación puede crear un directorio virtual como subdirectorio y dirigir el directorio virtual al directorio real de las páginas maestras. Las aplicaciones pueden establecer la propiedad MasterPageFile de una página en el nombre del directorio virtual, más el nombre del archivo de página maestra. Cuando soltamos un archivo de página maestra actualizado en el directorio real, la nueva página maestra aparecerá en todas las aplicaciones de inmediato.

Un segundo enfoque es utilizar un sistema de control de versiones para compartir un conjunto de archivos de páginas maestras en múltiples proyectos. La mayoría de los sistemas de control de versiones / control de origen admiten algún nivel de funcionalidad de "compartir", donde un archivo o una carpeta pueden aparecer en más de un proyecto. Cuando un desarrollador comprueba un archivo de página maestra actualizado, los otros proyectos verán el cambio inmediatamente (aunque este comportamiento generalmente es configurable). En producción y prueba, cada aplicación debería ser redistribuida para que aparezca la página maestra de actualización.

Finalmente, VirtualPathProvider en ASP.NET 2.0 puede servir archivos que no existen en el sistema de archivos. Con VirtualPathProvider, un conjunto de páginas maestras podría vivir en tablas de bases de datos que usan todas las aplicaciones. Para obtener un excelente artículo sobre VirutalPathProvider, consulte " Virtualizar el acceso al contenido: servir su sitio web desde un archivo ZIP ".

Supongamos que tiene dos proyectos separados de la aplicación web ASP.NET que necesitan usar una página maestra común.

¿Cuál es la mejor manera de compartir la página maestra en todos los proyectos sin tener que duplicar el código? Preferiblemente sin tener que recurrir al control de código fuente o al sistema de archivos pirateados.


Intento lograr lo mismo. Veo un par de soluciones, pero creo que usar un directorio virtual es probablemente la mejor manera de compartir páginas maestras.

Aquí hay un par de fuentes que puedes ver.

La tercera viñeta cerca del final del artículo le informa sobre las posibles formas en que puede compartir Masterpages también.


AFAIK no hay una forma elegante de hacer lo que estás buscando ... VS siempre terminará por copiarlo.

Creo que para ser honesto, puede que no sea una gran idea. Obviamente, ¿quiere compartir el código común más bajo, pero una página maestra completa? Parece que podría estar pidiendo problemas, ya que un cambio menor podría tener un impacto en uno o más aplicaciones ...

Sugeriría, en cambio, separar los buenos bits de funcionalidad en componentes / controles y desplegarlos.


Supongamos que puede crear un repositorio común para todos sus proyectos (una carpeta común en su árbol de control de origen, por ejemplo), podría agregar las páginas maestras como enlaces mediante rutas relativas.

Sin embargo, IIRC, Visual Studio hace copias locales de archivos agregados desde rutas externas. Es posible que deba editar el texto del archivo de solución / proyecto para agregar los archivos vinculados.

Esto, por supuesto, supone que utiliza el formato "Aplicación web". Los "sitios web" anteriores de VS no tienen archivos de proyecto y dependen de tener todos los archivos dentro de la carpeta del sitio.


No entiendo por qué querrías tener el mismo marcado en diferentes proyectos, si lo haces, no sé de una manera fácil.

Sin embargo, con el código, obviamente puede escribir un archivo de código que hereda de

System.Web.UI.MasterPage

Ponga en cualquier lógica que desee en todas sus páginas maestras allí. Constrúyelo como su dll increíble y luego solo incluya eso en sus proyectos.


Mantenga una copia primaria en control de fuente y deje que su sistema de control de origen se preocupe por ello.


Use un enlace simbólico :

Un enlace simbólico es un objeto del sistema de archivos que apunta a otro objeto del sistema de archivos. El objeto al que se apunta se llama objetivo. Los enlaces simbólicos son transparentes para los usuarios; los enlaces aparecen como archivos o directorios normales, y el usuario o la aplicación pueden actuar sobre ellos de la misma manera.