¿Hay alguna manera de obtener los nombres de las áreas en un proyecto de MVC?Obtener áreas asociadas con un proyecto de MVC
Aquí hay algunas maneras que se me ocurren:
a) Si tuviera la fuente, que podría navegar a través de la estructura de carpetas de proyectos y enumerar las carpetas en la carpeta Áreas. Pero eso no garantizaría que todas las carpetas representen áreas a menos que también haya enumerado la carpeta Controladores y Vistas debajo de cada una de las subcarpetas. Este enfoque, como puedes ver, apesta.
b) Del binario, podría enumerar todos los espacios de nombres que coincidan con los criterios RootNamespaceOfProject.Areas.*
.
O, estoy seguro de que hay una manera más elegante. Debe haber algún diccionario en el marco ASP.NET MVC que mantiene un registro de todas las áreas.
En segundo lugar, ¿existe también una construcción programática en el marco de MVC que representa un área? Parece que no puedo encontrar uno. Sólo hay cuatro construcciones que son relacionada a las áreas:
1. AreaRegistration
2. AreaRegistrationContext
3. IRouteWithArea
4. AreaHelpers (an internal class)
Si existiera, sería posible, por ejemplo, para enumerar todos los controladores dentro de esa área?
Editado
Acabo de notar que existe este archivo llamado MVC-AreaRegistrationTypeCache.xml
en la carpeta \ Windows \ Microsoft.NET \ Framework \ v4.x.x \ Temporary ASP.NET Files \ root \ RandomlyGeneratedHash1 \ RandomlyGeneratedHash2 \ UserCache.
Esta carpeta tiene dos archivos:
a) MVC-AreaRegistrationTypeCache.xml: Este archivo tiene la lista de todas las áreas en todas las asambleas en la máquina que tiene áreas.
b) MVC-ControllerTypeCache.xml: Este archivo enumera los controladores dentro de las áreas de los conjuntos.
Ahora, lo único que debe averiguar es si hay alguna forma programática para que MVC Framework lea estos archivos y diga si existe un área determinada en un archivo binario.
Estoy pensando que la clase AreaRegistration
podría ser la indicada. Explorando más ...
Ambas ideas son soluciones sin salida, ya que dependen de algo que no se puede controlar. Las áreas se pueden colocar en cualquier lugar de la estructura del proyecto, siempre que estén registradas y mapeadas. –