¿Cómo reutilizas el código html / js / server side entre los proyectos asp.net?

Tenemos un sistema de blog que vendimos a una cantidad de clientes diferentes (incluido en muchos proyectos diferentes). Este sistema incluye una cantidad de files diferentes: unas pocas páginas aspx, uno o dos controles ascx, un file css, un file javascript y algunos files de utilidad codebehind / vb.net. En general, el 90% de este module es igual entre los clientes, pero, por supuesto, cada cliente desea cierta personalización, desde cambios estéticos de html / css hasta ajustes de lógica de server / cliente.

Actualmente, para implementar nuestro sistema de blog en un nuevo proyecto, simplemente copymos los files (del último proyecto en el que trabajamos) y personalizamos los files según sea necesario … pero ahora tenemos 10 copys únicas e incompatibles de nuestro sistema de blog. Solo lograr que el sistema de blog funcione en cada proyecto lleva bastante time, y difundir las mejoras de los sistemas de blog más nuevos a sistemas más antiguos y el mantenimiento es un verdadero dolor de cabeza.

Idealmente, tendríamos una sola "copy de oro" de los files de nuestro sistema de blog que sirvió para el caso general (90%). Podríamos agregar esa copy dorada a un nuevo proyecto y tener un sistema de blog trabajando casi al instante; sin embargo, podríamos agregar o personalizar files según sea necesario. Aún mejor: a medida que hacemos mejoras en la "copy de oro", esos cambios pueden implementarse fácilmente en todos nuestros sitios, al time que respetamos las personalizaciones que hemos realizado para nuestros clientes.

Sé que podríamos agregar nuevos files css para cambiar las classs base y agregar nuevas classs vb.net que anulen la lógica del server base, pero realmente no estoy seguro de cómo manejar los files aspx, ascx y js. Idealmente, podríamos encontrar una solución basada en files o fuente segura; por ejemplo, si hay un file nuevo con personalizaciones, se anulará automáticamente cualquier marcado / js / etc. correspondiente en el file dorado. Por supuesto, estamos abiertos a todas las soluciones, parece un escenario bastante común, así que esperaba que alguien hubiera desarrollado una "mejor práctica". ¿Es posible que lo que estoy describiendo sea posible? Cualquier consejo o dirección es realmente apreciado, ¡gracias de antemano!

Shane

Podría usar su sistema de control de fuente y Visual Studio para hacer esto, pero podría ser complicado si tiene éxito (muchos clientes). Si toma este enfoque, así es como lo haría.

  1. Separe el código en 2 estructuras o proyectos de Visual Studio. El código común (el 90% que menciona) y el código personalizado (el otro 10%).

  2. Cree una estructura inicial o línea base en su sistema de control de origen. Esta es la versión más genérica de los dos sets de códigos.

  3. Branch la parte personalizada del código para cada cliente.

  4. Ramifique la parte del código común cuando tenga correcciones de errores u otras actualizaciones. Dentro de Visual Studio puede crear 1 proyecto y fusionar los directorys o usar 2 proyectos diferentes combinados en una sola solución.

Espero que ayude.