tutorial - mvc c# ejemplo




Fusionando un proyecto común con variaciones de compilación en.NET MVC (4)

Tengo un sitio .net mvc que debería publicarse para muchos clientes diferentes y, por lo tanto, varía ligeramente según el objetivo.

¿Hay alguna manera de configurar la estructura central del proyecto, por ejemplo (simplificado):

  • puntos de vista
  • modelos
  • controladores
  • bienes
  • compartimiento

y haga una fusión en el momento de la compilación con cualquier variación que pueda tener el objetivo actual. Por ejemplo:

proyecto central:

  • puntos de vista
    • view1.cshtml
    • view2.cshtml

(eliminado el resto de las carpetas por brevedad)

cliente 1 objetivo:

  • puntos de vista
    • view2.cshtml
    • view3.cshtml

resultado de fusión deseado:

  • puntos de vista
    • view1.cshtml (del proyecto principal)
    • view2.cshtml (del objetivo del cliente 1)
    • view3.cshtml (del objetivo del cliente 1)

La misma regla debería aplicarse a los controladores, binarios, etc.


Hay algunas respuestas de código realmente buenas aquí, pero si desea un sistema de compilación automatizada para cada cliente y tiene muchas cargas, también podría ser una configuración muy difícil. Cuando podría configurar un script para Powershell que pueda hacer esto

pseudo codigo

For each client site
    download base code to code/
    download this client's changes to code/ overwriting files
    msbuild ....
    copy client/ bin to build/client/
    Delete code/
End For each

La respuesta a esta pregunta requiere alguna innovación. Así que mira mi solución por favor:

Configure la estructura central del proyecto para las clases que cubren los archivos de Modelo y Controlador y luego utilícelas con la técnica denominada Agregar elemento existente como un enlace que puede compartir lo siguiente:

  • Lógica de aplicación común a ambas aplicaciones, pero no portátil
  • Controles de usuario sin dependencias de plataforma

Lamentablemente eso no es compatible con vistas de navaja. Así que lo más fácil de copiar vistas compartidas es tener múltiples archivos de diseño como el famoso archivo _Layout.cshtml , uno en cada aplicación web. También puede compilar sus vistas de asp.net mvc Razor en una dll separada para usarlas como una referencia (como vistas compartidas).

Para los Activos , puede alojar todas sus hojas de estilo (y algunos javascript, si corresponde) desde su aplicación web principal y acceder desde cada aplicación web.

La carpeta bin tiene los archivos dll de MVC principales más los que agrega para usar en su proyecto y un archivo projectName.dll que se creará después de la construcción. Puede simplemente agregar / eliminarlos haciendo clic derecho en Referencias usando la herramienta Agregar referencia .


Lo que necesita es una sección de superadministrador, donde podría [de] activar diferentes partes del sitio, dependiendo del cliente.


Su requisito es un gran candidato para una plantilla de proyecto de Visual Studio personalizada.

Estoy pensando en preparar un gran proyecto con todas las características que está implementando para cualquier cliente. Este proyecto también podría ser el tronco que podría actualizar cuando se necesite una nueva característica o una solución. Luego, exporte la solución troncal a una plantilla . Luego continúe con la plantilla de proyecto VSIX e incorpore un asistente en ella, para recopilar información del usuario sobre la creación de un proyecto. En función de la entrada, realice la acción adecuada y agregue / elimine los archivos necesarios o habilite / deshabilite las funciones según sea necesario.

O simplemente puede mantener los archivos de origen en el sistema de archivos y organizarlos en la plantilla sobre la marcha, es decir, como resultado de la entrada del usuario durante el asistente. Al final del asistente, la plantilla se implementa y ... voilá.





asp.net-mvc