asp.net-mvc - net - route controller c#
Áreas multiproyecto en ASP.Net MVC 3 (2)
Necesito tener la misma estructura, así que he descubierto cómo tener áreas como proyectos separados. No se necesitan cambios de código, solo un poco de trabajo de configuración que tiene que hacer.
Voy a crear una entrada de blog sobre esto, pero aquí están los pasos básicos.
Supongamos que tiene un solo proyecto de aplicación MVC y esta será su aplicación "shell".
haga clic derecho en el proyecto de shell y "Agregar área ...". Escriba el nombre del área. Esto creará una carpeta Á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.
Elimine la carpeta debajo de la carpeta de áreas que agregó el asistente de plantilla.
Modifique el web.config del nuevo proyecto y saque las cadenas de conexión y las secciones de autenticación, membresía, perfil, rolemanger. Realmente no necesita el web.config pero la afeitadora intellisense no funciona sin él.
Cree un directorio virtual en la carpeta "Áreas" del proyecto de shell con el nombre de su área como alias y apúntelo a su proyecto de "área". Deberá usar IIS o IIS Express para esto. Yo uso IIS. En IIS Express tienes que modificar el archivo de configuración. Creo que ScottGu tenía una entrada de blog sobre cómo hacer esto.
Cree un evento posterior a la compilación en su proyecto de "área" para copiar la dll en la carpeta de contenedores de "shell". Mi evento de compilación es: copy $ (TargetDir) / $ (TargetFileName) $ (SolutionDir) / ShellProjectName / bin / $ (TargetFileName)
En el shell web.config agregue el proyecto "area" a la sección System.Web / Assemblies.
En lugar de 6/7, solo puede hacer referencia al proyecto "area" con el proyecto "shell" y funciona igual de bien. Pero, entonces tienes que desplegar todas las DLL de "área" cada vez. Probablemente voy a hacer algún tipo de código de sondeo para agregar los ensamblajes de "área" al dominio de la aplicación al inicio de la aplicación usando reflexión o MEF.
También es posible que 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 manera, no tiene que preocuparse por nombres de controladores duplicados 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, trataré de recordar agregar un enlace aquí.
Blogué cómo estoy haciendo esto en http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects si alguien está interesado.
¿Alguien tiene alguna idea sobre el soporte de área de multiproyectos en asp.net mvc 3? Como se degradó a un estado futuro en mvc 2. Si aún no está incluido, debemos mirar hacia ASP.Net MVC Portable Areas a través de MvcContrib . ¿Puedes compartir tus experiencias?
¿Cuáles son las formas recomendadas para administrar una aplicación grande? Leí sobre el MEF . ¿En qué escenarios se recomienda MEF?
Soy el líder de desarrollo en ASP.NET MVC en Microsoft.
No hay planes para incluir áreas de proyectos múltiples en ASP.NET MVC 3. Sin embargo, es definitivamente un área que planeamos volver a visitar en el futuro.
Mientras tanto, las soluciones de MvcContrib son probablemente la mejor opción. La descarga de MVC Futures todavía incluye una versión antigua (y quizás solo semi-funcional) de la función original de áreas de proyectos múltiples. Debido a que el código fuente completo también está disponible, es posible que pueda crear una solución que se adapte a sus necesidades.