tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
13
ZUGRIFFE
1575
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    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::..
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Wirst du wohl selber ausprogrammieren müssen. Und zwar OHNE Reflection - so wie du das willst.
     

  3. #3
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    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::..
     

  4. #4
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Und warum machst du das nicht per Reflection über die Assembly-Files drüber? Dann ersparst du dir diese ganze String-Meierei ...
     

  5. #5
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    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).
    Geändert von SixDark (22.08.06 um 12:25 Uhr)
     

  6. #6
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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.
     

  7. #7
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    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::..
     

  8. #8
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Auf alle Fälle.
    Bei Fragen kannst dich ja gerne wieder melden
     

  9. #9
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    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 :
    1
    
    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::..
     

  10. #10
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Zitat Zitat von SixDark
    Wo finde ich die LoaderExceptions property? Ich hab schon im Netz gesucht, aber nichts passendes gefunden.
    ReflectionTypeLoadException.LoaderExceptions Property
    Zitat Zitat von MSDN
    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.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  11. #11
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    Manchmal bin ich echt etwas dämlich!
    Vielen Dank für die Antwort. Die Fehler haben sich mittlerweile beheben lassen.

    Trotzdem hab ich noch zwei Sachen, bei denen ich schon seit Stunden nicht weiterkomme:

    Ich kriege es nicht hin in meiner Liste die Methoden auszuklammern, die automatisch durch die Properties erstellt werden. Also solche Methoden wie "get_Irgendwas()" oder "set_Irgendwas(value)"...

    Ich bekomme nicht raus, von welcher anderen Klasse bzw. von welchem anderen Interface eine Klasse abgeleitet ist, wenn das Interface nicht System-Standard ist. Hat da jemand mal ein Denkanstoss für mich?


    Ich hoffe ihr könnt mir helfen...

    Viele Grüsse...
    ..::SD::..
     

  12. #12
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    Hallo nochmal!

    Ich habe grad ein Problem mit den Referenzen. Wie zum Teufel bekomme ich alle Referenzen zu anderen (externen) Klassen. Ich möchte gern die Klasse inkl. Namespace und den Methodennamen, der Methode, die aufgerufen wird. Ich weiss aber echt nicht wie ich an diese Informationen komme...

    Kann mir jemand helfen?

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

  13. #13
    gehho gehho ist offline Rookie
    Registriert seit
    Jul 2005
    Beiträge
    5
    Hallo,

    Zitat Zitat von SixDark Beitrag anzeigen
    Manchmal bin ich echt etwas dämlich!
    Vielen Dank für die Antwort. Die Fehler haben sich mittlerweile beheben lassen.
    bekomme genau die gleiche Meldung beim Laden einer Assembly, die ich vorher noch ohne Probleme laden konnte. Was war denn bei dir das Problem? Ich kann leider keinen Grund finden...
     

  14. #14
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    Hallo,

    das Problem war, dass einige Referenzen gefehlt haben. Wenn Du eine Assembly öffnen möchtest, die ihrerseits wieder Referenzen auf andere Projekte hat, dann musst Du diese Referenzen zu Deinem Projekt hinzufügen. Sonst funktioniert es nicht.

    Versuch mal in etwa folgendes als Fehlerausgabe einzupflanzen (LoaderException):

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    Assembly ass;
    Type[] typeArray = new Type[0];
     
    try
    {
       ass = Assembly.LoadFile(fileName_of_your_Assembly);
       typeArray = ass.GetTypes();
    }
    catch (ReflectionTypeLoadException exc)
    {
       string Fehlertext = "";
       Exception[] exceptions = exc.LoaderExceptions;
       foreach (Exception fehler in exceptions)
       {
          Fehlertext += fehler.Message + "\r\n";
       }
       MessageBox.Show(Fehlertext";
    }

    Ich hoffe das hilft Dir weiter...

    Viele Grüsse
    ..::SD::..
     

Ähnliche Themen

  1. KML Files auslesen
    Von oldputz1990 im Forum PHP
    Antworten: 0
    Letzter Beitrag: 14.11.08, 10:17
  2. Code zum Auslesen von MP3-Files
    Von Html im Forum PHP
    Antworten: 5
    Letzter Beitrag: 11.08.07, 11:42
  3. Private Attribute über Reflection auslesen
    Von Thomas Darimont im Forum .NET Application und Service Design
    Antworten: 8
    Letzter Beitrag: 19.07.06, 14:55
  4. Antworten: 1
    Letzter Beitrag: 17.12.03, 15:54
  5. files auslesen und integrieren ..
    Von h-brock im Forum PHP
    Antworten: 5
    Letzter Beitrag: 22.03.02, 13:26