Solution-/Project-Files mit Reflection auslesen?

SixDark

Erfahrenes Mitglied
Hi @all!

Ich möchte gern das Solution-File, alle in dieser Solution enthaltenen Projekte und in diesen Projekten wiederum alle Dateien auslesen und strukturieren. D.h. ich möchte wissen welche Projekte in der Solution sind, welche Dateien und Unterordner in den Projekten sind und natürlich - ganz wichtig - was die einzelnen Dateien (.cs-Files hauptsächlich) enthalten - also private, public, protected... Member, welche Methoden, was die Methoden für Parameter erwarten, was sie für einen Rückgabewert haben etc.

FRAGE:
Kann man das mit Reflection, ohne eine Instanz der jeweiligen Klassen zu erstellen und ohne diese Assamblies zu kompilieren? Also sozusagen, Project-File öffnen und dann auf den Inhalt parsen? Genauso bei den Klassen-Files!? Ich möchte ungern mit String-Parsern rumspielen - ist mir eigentlich zu aufwändig. Aber vielleicht gibt es ja eine Mögliochkeit im DOTNET-FW, die ich nur noch nicht gefunden habe...

Vielen Dank an alle, die mir helfen wollen!

MfG
..::SD::..
 
Hi!

Vielen Dank schonmal für Deine schnelle Antwort!

Du meinst also ich muss mich mit String-Parsen rumschlagen?!
Ich dachte es mir fast, nachdem ich schon 3 Studen lang den Reflection-Namensraum durchsucht habe... Schade eigentlich...

Naja, dann hab ich ja wieder einiges an Entwicklungsarbeit vor mir. Im Endeffekt soll mal ein Programm entstehen, in dem ich das Solutionfile öffne und erliest mir alles aus was drin steht und löst mir sämtliche Referenzen auf und stellt mir das ganze evtl. noch grafisch dar. Mit allen Summery-Tags, Beschreibungen, Membern etc.

Vielen Dank trotzdem!

MfG
..::SD::..
 
Und warum machst du das nicht per Reflection über die Assembly-Files drüber? Dann ersparst du dir diese ganze String-Meierei ...
 
Weiss ich nicht genau. Irgendwas hält mich davon ab das so zu machen - ich weiss aber noch nicht was es ist.

Ah ja doch.
Ich weiss nicht an welcher Stelle ich anfangen soll. Im Textbereich hab ich ja das Solutionfile, aber fertig kompiliert?! Es sind viele DLL's und einige Webprojekte, die auf dem Webserver laufen (lokal).
 
Zuletzt bearbeitet:
Wenn du die Assembly nimmst, dann hast du die static void main bei der unfangen kannst. Dies ist der Entry-Point und von da aus kannst du alles schön nachvollziehen.
 
Ich glaube Du hast recht Norbert! Es ist wohl doch besser ich benutze Reflection und zieh mir alles aus den fertigen DLL's. Hab schon mal ein wenig rumexperimentiert und das scheint die bessere Lösung zu sein.

Vielen Dank nochmal für Deine Anregung! Ist doch immer wieder besser, mal die Meinung von anderen zu überdenken.

Viele Grüsse
..::SD::..
 
Hallo Norbert!

Ich hab jetzt schon einiges für meinen SolutionExplorer fertig gestellt. Hab allerdings ein Problem:

Wenn ich manche DLL's öffnen will, kommt folgender Fehler:

Code:
System.Reflection.ReflectionTypeLoadException: Unable to open one or more of the requested types. Retrieve the LoaderExceptions property for more information. ...

Kannst Du mir sagen was das bedeutet? Wo finde ich die LoaderExceptions property? Ich hab schon im Netz gesucht, aber nichts passendes gefunden. Woran kann dieser Fehler liegen?

Viele Grüsse
..::SD::..
 
SixDark hat gesagt.:
Wo finde ich die LoaderExceptions property? Ich hab schon im Netz gesucht, aber nichts passendes gefunden.
ReflectionTypeLoadException.LoaderExceptions Property
MSDN hat gesagt.:
The LoaderExceptions property retrieves an array of type Exception that is parallel to the Types array. This array will contain null values whenever reflection cannot load a class.
Steht in meinem Objektbrowser im VS2003 EA. ;)
 

Neue Beiträge

Zurück