Pregunta

Suponga que tiene dos proyectos de aplicaciones web ASP.NET independientes y ambos necesitan utilizar una MasterPage común.

¿Cuál es la mejor manera de compartir MasterPage entre proyectos sin tener que duplicar el código?Preferiblemente sin tener que recurrir al control de código fuente o a hacks del sistema de archivos.

¿Fue útil?

Solución

He intentado lograr lo mismo.Busco 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 puede consultar.

El tercer punto cerca del final del artículo le informa sobre posibles formas en las que también puede compartir Masterpages.

Otros consejos

De k.Scott Allen Páginas maestras de ASP.Net:Consejos, trucos y trampas artículo sobre "Compartir páginas maestras":

La primera alternativa es copiar los archivos de página maestra compartidos en un archivo ubicación única en un servidor web IIS.A continuación, cada aplicación puede crear un directorio virtual como subdirectorio y apunte el directorio virtual al directorio real de páginas maestras.A continuación, las aplicaciones pueden establecer la propiedad MasterPageFile de una página al nombre de la propiedad virtual y el nombre del archivo de página maestra.Cuando soltamos un Se actualizó el archivo de página maestra en el directorio real, la nueva página maestra aparecerá en todas las aplicaciones de forma inmediata.

Un segundo enfoque consiste en utilizar un sistema de control de versiones para compartir un conjunto de archivos de página maestra en varios proyectos.La mayoría de los controles de código fuente / Los sistemas de control de versiones admiten cierto nivel de funcionalidad de "compartir", donde un archivo o carpeta puede aparecer en más de un proyecto.Cuando un El desarrollador protege un archivo de página maestra actualizado, los demás proyectos verá el cambio inmediatamente (aunque este comportamiento es generalmente configurable).En producción y prueba, cada aplicación necesitaría se volverá a implementar para que aparezca la página maestra de actualización.

Por último, VirtualPathProvider en ASP.NET 2.0 puede servir archivos que no existen en el sistema de archivos.Con VirtualPathProvider, un conjunto de las páginas maestras podrían residir en tablas de base de datos que todas las aplicaciones uso.Para ver un excelente artículo sobre VirutalPathProvider, consulte “Virtualización del acceso al contenido:Servir su sitio web desde un archivo ZIP”.

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

Suponiendo que puede crear un repositorio común para todos sus proyectos (una carpeta común en su árbol de control de código fuente, por ejemplo), podría agregar las páginas maestras como enlaces utilizando 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, suponiendo que utilice el formato "Aplicación web".Los "sitios web" antiguos no tienen archivos de proyecto y dependen de tener todos los archivos dentro de la carpeta del sitio.

AFAIK, no existe una forma elegante de hacer lo que buscas.VS siempre terminará copiándolo.

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

En su lugar, sugeriría separar las buenas partes de funcionalidad en componentes/controles e implementarlas.

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

Sin embargo, con el código, obviamente puedes escribir un archivo de código que herede de

System.Web.UI.MasterPage

Introduzca la lógica que desee en todas sus páginas maestras.Constrúyalo como su increíble dll y luego inclúyalo en sus proyectos.

Usar un enlace simbólico:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top