Necesito tener la misma estructura así que he descubierto cómo tener áreas como proyectos separados. No se necesitan cambios de código, solo debe hacer un poco de trabajo de configuración.
Voy a crear una entrada de blog sobre esto, pero aquí están los pasos básicos.
Supongamos que tiene un único proyecto de aplicación MVC y esta será su aplicación "shell".
clic derecho sobre el proyecto de concha y "Añadir área ...". Escriba el nombre del área. Esto creará una carpeta de Áreas con su área en ella. (Esto no es 100% necesario pero sí necesita la carpeta "Áreas" y puede robar la clase XXXXAreaRegistration para su aplicación.)
Cree un nuevo proyecto vacío MVC3 en su solución para que coincida con su área. Mueva el archivo XXXXAreaRegistration.cs al nuevo proyecto y ajuste el espacio de nombres según corresponda.
Borre la carpeta debajo de la carpeta de áreas que el asistente de plantillas agregó.
Modifique el archivo web.config del nuevo proyecto y elimine las cadenas de conexión y las secciones de autenticación, membresía, perfil, rol de funciones. Realmente no necesitas el web.config, pero la navaja intellisense no funciona sin él.
Cree un directorio virtual en la carpeta "Áreas" del proyecto de shell con el nombre de su área como el alias y apúntelo a su proyecto de "área". Necesitará usar IIS o IIS Express para esto. Yo uso IIS. En IIS express, debe modificar el archivo de configuración. Creo que ScottGu tenía una entrada en el blog sobre cómo hacer esto.
Cree un evento posterior a la construcción en su proyecto de "área" para copiar el dll a la carpeta bin de proyectos "shell". Mi evento de compilación es: copy $ (TargetDir) \ $ (TargetFileName) $ (SolutionDir) \ ShellProjectName \ bin \ $ (TargetFileName)
En el shell web.config, agregue el proyecto "area" en System.Web/Sección de Asambleas.
En lugar de 6/7 que se acaba de hacer referencia al proyecto "zona" con el proyecto "cáscara" y funciona igual de bien.Pero, entonces debes desplegar todos los dlls de "área" cada vez. Probablemente voy a hacer algún tipo de código de sondeo para agregar los ensambles de "área" al dominio de la aplicación al inicio de la aplicación mediante reflexión o MEF.
Es posible que también desee editar su enrutamiento y agregarle el filtro de espacio de nombres tanto en la aplicación de shell como en la aplicación de área. De esta forma, no tiene que preocuparse por los nombres de controlador duplicados que entran en conflicto entre la aplicación de venta y las aplicaciones de área.
Eso es todo. Una vez que publique una entrada de blog formal intentaré recordar agregar un enlace aquí.
He escrito en mi blog cómo estoy haciendo esto en http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects si alguien está interesado.
Esto es, en mi humilde opinión, la parte más débil de ASP.NET MVC en este momento. Espero que el equipo de MVC trabaje en esto lo antes posible. Ser capaz de crear un entorno modular es definitivamente una necesidad para nosotros. – W3Max
El tiempo MVC4 podría ser un poco más rápido, pero con el LOB empresarial en el limbo con Silverlight, necesita tener la historia solidificada para cambiar a MVC4 ... ¡con suerte P & P puede involucrarse con un ejemplo de seda! – felickz