Obtener áreas asociadas con un proyecto MVC

¿Hay alguna manera de obtener los nombres de las áreas en un proyecto MVC?

Aquí hay algunas maneras en que puedo pensar:

a) Si tuviera la fuente, podría examinar la estructura de carpetas del proyecto y enumerar las carpetas en la carpeta Áreas. Pero eso no garantizaría que todas las carpetas representen áreas a menos que también enumere la carpeta Controladores y Vistas en cada una de las subcarpetas. Este enfoque, como puedes ver, apesta.

b) Desde el binario, podría enumerar todos los espacios de nombres que coinciden con los criteriosRootNamespaceOfProject.Areas.*.

O, estoy seguro de que hay una forma más elegante. Debe haber algún diccionario en el marco ASP.NET MVC que mantenga un registro de todas las áreas.

En segundo lugar, ¿existe también una construcción programática en el marco MVC que represente un área? Parece que no puedo encontrar uno. Solo hay cuatro construcciones que sonrelacionado a las áreas:

 1. AreaRegistration
 2. AreaRegistrationContext
 3. IRouteWithArea
 4. AreaHelpers (an internal class)

Si hubiera uno, ¿sería posible, digamos, enumerar todos los controladores dentro de esa área?

Editado

Acabo de notar que hay un archivo llamadoMVC-AreaRegistrationTypeCache.xml en la carpeta \ Windows \ Microsoft.NET \ Framework \ v4.x.x \ Archivos temporales de ASP.NET \ root \ RandomlyGeneratedHash1 \ RandomlyGeneratedHash2 \ UserCache.

Esta carpeta tiene dos archivos:

una)MVC-AreaRegistrationTypeCache.xml: Este archivo tiene la lista de todas las áreas en todos los ensamblajes en la máquina que tienen áreas.

si)MVC-ControllerTypeCache.xml: Este archivo enumera los controladores dentro de las áreas de los ensamblados.

Ahora, lo único que debe saber es si hay alguna forma programática para que el marco MVC lea estos archivos y me diga si existe un área determinada en un binario.

Estoy pensando que elAreaRegistration la clase puede ser la indicada Explorando más allá ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta