Pregunta Áreas de multiproyecto en ASP.Net MVC 3


¿Alguien tiene alguna idea sobre el soporte multiproject area en asp.net mvc 3? Como estaba degradado a estado futuro en mvc 2. Si aún no está incluido, entonces debemos esperar ASP.Net MVC Áreas portátiles a través de MvcContrib. ¿Puedes compartir tus experiencias?

¿Cuál es la forma recomendada para administrar una aplicación grande? Yo leo sobre MEF. ¿En qué escenarios se recomienda MEF?


22
2017-10-19 07:27


origen


Respuestas:


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, definitivamente es 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 aún incluye una versión antigua (y quizás solo semi funcional) de la función original de áreas de múltiples proyectos. Debido a que el código fuente completo para este también está disponible, es posible que pueda construir una solución que se adapte a sus necesidades.


15
2017-10-19 17:18



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 solo proyecto de aplicación MVC y esta será su aplicación "shell".

  1. Haga clic derecho en el proyecto de shell y "Agregar á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).

  2. 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.

  3. Elimine la carpeta debajo de la carpeta de áreas que el asistente de plantillas agregó.

  4. Modifique el archivo web.config del nuevo proyecto y elimine las cadenas de conexión y las secciones de autenticación, membresía, perfil y rol de papel. Realmente no necesitas el web.config, pero la navaja intellisense no funciona sin él.

  5. 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 tuvo una entrada en el blog sobre cómo hacer esto.

  6. 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)

  7. En el shell web.config agregue el proyecto "area" en la sección System.Web / Assemblies.

En lugar de 6/7 puede simplemente hacer referencia al proyecto "área" con el proyecto "shell" 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í.

Escribí en mi blog cómo estoy haciendo esto en http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects si alguien está interesado


6
2017-08-23 20:32