System.TypeInitializationException - beim Einbinden einer Klasse

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    System.TypeInitializationException - beim Einbinden einer Klasse

    Moin!

    ich bin dabei eine Konsolenanwendung zu erstellen und habe eine andere DLL eingebunden. Zum einen habe ich einen Verweis auf die DLL erstellt und zum anderen Datei > Hinzufügen > das Projekt der anderen DLL hinzugefügt.

    Wenn ich das ganze zum Debuggen starte bekomme ich folgende Fehlermeldung:

    System.TypeInitializationException wurde nicht behandelt.
    Message: Ein Ausnahmefehler des Typs "System.TypeInitializationException" ist in mscorlib.dll aufgetreten.
    Zusätzliche Informationen: Der Typeninitialisierer für "EBL_Projekt2KatasterSync.main" hat eine Ausnahme verursacht.


    Wenn ich die einbindende Zeile

    VB.NET-Quellcode

    1. Private _CmdLogger As New EBL.Tools.Logger


    rausnehme, dann läuft die Anwendung durch.

    Ich bin der Meinung an anderer Stelle die DLL auf gleiche Art und Weise eingebunden zu haben.

    Irgendwie stehe ich auf dem Schlauch und komme nicht weiter.

    Kann mir einer weiterhelfen?

    Gruß Jan

    Nachtrag - beim Starten des Hauptprogrammes kommt es noch zu folgender Meldung:



    Vielleicht hilft das noch weiter ...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „jan99“ ()

    Moin!

    jetzt geht das "noch weniger".

    Es geht um das Projekt "EBL_Projekt2KatasterSync" und die einzubindende DLL ist die EBL.Tools.

    Ich habe jetzt folgende Definition vorgenommen, nachdem ich den Verweis auf die EBL.Tools.dll im Debug-Verzeichnis entfernt habe. (So hatte ich das bei einem anderen Projekt gemacht).

    Dann habe ich den Verweis auf die EBL_Projekt2KatasterSync.exe gesetzt und das Programm gestartet.



    Jetzt kommt es zu folgender Meldung - es ist also nicht einmal mehr die EBL.Tools mit seinen Funktionen bekannt.



    .... ???

    Jetzt verstehe ich gar nichts mehr!

    Gruß Jan
    @jan99 Es sieht so aus, als hättest Du eine Projektmappe mit einem Hauptprogramm und mehreren DLLs.
    Du machst einen Verweis auf die DLL im Debug-Ordner, das ist falsch.
    Verweise nicht auf eine erstellte DLL Deines Projekts, sondern verweise auf das DLL-Projekt innerhalb Deiner Projektmappe.
    Größter Vorteil: Du kannst die DLL im Projekt umbenennen und die Verweise bleiben bestehen.
    Räume also zunächst Dein Projekt dahingehend auf. Dann sehen wir weiter.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin!

    zunächst habe ich alles nochmal neu angelegt - ohne Erfolg und auch die Filme habe ich mir angesehen.

    Aber irgendwie komme ich nicht weiter!

    Um es noch einmal zusammenzufassen - ich habe zunächst über Datei > Neues Projekt eines entsprechend angelegt und mit "EBL_Projekt2KatasterSync" benannt. Dann habe ich das auch in einen gleichnamigen Ordner gespeichert.

    Im nächsten Schritt dann über Datei > Hinzufügen > Vorhandenes Projekt das EBL.Tools hinzugefügt.

    Als nächstes würde ich den Verweis für die DLL setzen wollen. Im übrigen sind "EBL_Projekt2KatasterSync" und "EBL.Tools" in derselben Frameworkversion - das habe ich nochmal geprüft.

    RodFromGermany schreibt dann
    Du machst einen Verweis auf die DLL im Debug-Ordner, das ist falsch.

    Verweise nicht auf eine erstellte DLL Deines Projekts, sondern verweise auf das DLL-Projekt innerhalb Deiner Projektmappe.


    Da kann ein Punkt sein - aber den verstehe ich nicht! Ich habe einmal unter dem EBL.Tool-Verzeichnis nach DLL suchen lassen und da finde ich diese nur in Debug oder Release:



    Wo soll ich jetzt hin verweisen?

    Vielleicht ist dann das Problem gelöst.

    Gruß Jan
    Moin!

    erst einmal danke für die Rückmeldung, aber erst dachte ich eine Dicken Balken vor dem Kopf zu haben bis ich das gefunden habe.



    Aber wenn ich das aussuche und anwähle wird in der Liste der Verweise der Pfad eingetragen, den ich schon einmal hatte.



    Aber die Fehlermeldung vom Anfang ist dann immer noch da!

    Gruß Jan
    Lösch erstmal alle vorherige Verweise auf dieses Projekt bzw. DLL und setze nur den Verweis auf das Projekt.
    --
    Nachtrag zum Pfad:
    VS holt automatisch die richtige Version des referenzierten Bibliotheks/Programms. Du musst nicht mehr drum kümmern, ob Du den Verweis die Datei im Debug- oder die im Release-Ordner setzen sollst.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xtts02“ ()

    Moin!

    da ich ein dickes Brett vor dem Kopf habe hier meine Schritte.



    Dann entferne ich unter dem Hauptprojekt EBL_Projekt2KatasterSync den EBL.Tools-Eintrag.



    Dann füge ich einen neuen Verweis ein:



    Dann sieht es aber wieder gleich aus - wie oben!!



    Und weiterhin kommt die Fehlermeldung:



    .... und nun ???

    Gruß Jan
    System.TypeInitializationException wurde nicht behandelt.
    Message: Ein Ausnahmefehler des Typs "System.TypeInitializationException" ist in mscorlib.dll aufgetreten.
    Zusätzliche Informationen: Der Typeninitialisierer für "EBL_Projekt2KatasterSync.main" hat eine Ausnahme verursacht.


    Nicht mehr als in dem Dialog!

    Gruß Jan
    Moin!

    bei meinem vb-Seminar (das in der AutoCAD-Umgebung stattgefunden hat) wurde mir immer gesagt, dass diese Einstellung auf FALSE gesetzt werden soll!

    Werde es nachher nochmal mit TRUE ausprobieren.

    Frage: wird die lokale Kopie dann immer automatisch aktualisiert, wenn das Original neu erstellt wird?

    Gruß Jan
    @jan99 Ja.
    ===
    Habt Ihr bei dem VB-Seminar den Verweis auf das Projekt oder die DLL gesetzt?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin !

    ich habe das gestern einmal auf die Schnelle ausprobiert mit der lokalen Kopie und das Ergebnis sieht positiv aus.

    Bei dem Seminar haben wir keine weiteren DLL eingebunden und bei den Projekten unter AutoCAD hat man mir ausdrücklich gesagt, dass ich NIE eine lokale Kopie erstellen soll.

    Werde nochmal jemand anders frage, der auch in dem Umfeld arbeitet - allerdings unter C#. Sollte aber vermutlich gleich arbeiten.

    Danke für Eure Geduld.

    Gruß Jan

    jan99 schrieb:

    bei den Projekten unter AutoCAD
    Ich kann mir vorstellen, dass da ein ganzer Klopper an DLLs rumliegt, die dann problembezogen aufgerufen werden.
    Da AutoCAD ordentlich installiert ist, wird der ferne Verweis mit Sicherheit funktionieren.
    Ich hab es hier hauptsächlich mit Geräte-Kommunikations-DLLs zu tun, da gibt es ggf. Lizenzprobleme, wenn ich die Primärinstallation weiterreichen müsste.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!