Get Bereiche, die mit einem MVC-Projekt verknüpft sind

Gibt es eine Möglichkeit, die Namen der Bereiche in einem MVC-Projekt abzurufen?

Hier sind ein paar Möglichkeiten, die ich mir vorstellen kann:

a) Wenn ich die Quelle hätte, könnte ich die Projektordnerstruktur durchsuchen und die Ordner unter dem Ordner "Bereiche" auflisten. Aber das würde nicht garantieren, dass alle Ordner Bereiche darstellen, wenn ich nicht auch den Ordner "Controller" und "Ansichten" unter den einzelnen Unterordnern auflisten würde. Dieser Ansatz ist, wie Sie sehen, zum Kotzen.

b) Aus der Binärdatei konnte ich alle Namespaces auflisten, die den Kriterien entsprechenRootNamespaceOfProject.Areas.*.

Oder, ich bin sicher, es gibt einen eleganteren Weg. Das ASP.NET MVC-Framework muss ein Wörterbuch enthalten, das alle Bereiche aufzeichnet.

Zweitens, gibt es im MVC-Framework auch ein programmatisches Konstrukt, das einen Bereich darstellt? Ich kann anscheinend keinen finden. Es gibt nur vier Konstrukte, die @ siverbunde zu Bereichen:

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

Wenn es einen gäbe, wäre es beispielsweise möglich, alle Controller in diesem Bereich aufzulisten?

Bearbeitet

Ich habe gerade bemerkt, dass es diese Datei mit dem NamenMVC-AreaRegistrationTypeCache.xml im Ordner \ Windows \ Microsoft.NET \ Framework \ v4.x.x \ Temporäre ASP.NET-Dateien \ root \ RandomlyGeneratedHash1 \ RandomlyGeneratedHash2 \ UserCache.

Dieser Ordner enthält zwei Dateien:

ein) MVC-AreaRegistrationTypeCache.xml: Diese Datei enthält die Liste aller Bereiche in allen Baugruppen auf dem Computer, die über Bereiche verfügen.

b) MVC-ControllerTypeCache.xml: Diese Datei listet die Controller in den Bereichen der Baugruppen auf.

Nun, das einzige, was Sie herausfinden müssen, ist, ob es eine programmgesteuerte Möglichkeit gibt, das MVC-Framework diese Dateien lesen zu lassen und mir mitzuteilen, ob ein bestimmter Bereich in einer Binärdatei vorhanden ist.

Ich denke, dass dieAreaRegistration class könnte das sein. Es weiter erforschen ...

Antworten auf die Frage(6)

Ihre Antwort auf die Frage