Problem mit System.TypeInitializationException

  • VB.NET

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

    Problem mit System.TypeInitializationException

    Moin!

    ich habe eine Frage zur Fehlermeldung, die vielleicht auch im Zusammenhang zu System.TypeInitializationException - beim Einbinden einer Klasse stehen könnte.

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


    Es hängt vermutlich damit zusammen, dass ich eine Klasse einbinde, bei der auch ein Verweis auf eine Dritt-Anwendung (AutoCAD) abzielt.

    Es gibt nun zwei Ideen - ich in Grundzügen auch schon einmal oberflächlich mit einem anderen Programmierer (nicht VB) angerissen habe.

    Entweder baue ich nun die Klasse so um, dass diese im Grund ohne die Drittanwendung auskommt und dann über eine Vererbung in eine Klasse für AutoCAD ausgebaut wird.

    Die andere Idee ist die Verweise für AutoCAD von einer Variablen abhängig zu machen. Es müssten also die Verweise und die Deklarationen der Instanzen codiert werden.

    Der letztere Weg klingt für mich nach am wenigsten Arbeit.

    Der andere Programmierer meint, dass es soetwas in C gibt - aber in VB.net??

    Kann einer von Euch etwas dazu sagen oder weiterhelfen?

    Gruß Jan
    Meinst du Conditional Compiling?

    Visual Basic-Quellcode

    1. #Const AutoCAD = True
    2. #If AutoCAD Then
    3. Console.WriteLine("AutoCAD aktiv")
    4. #Else
    5. Console.WriteLine("AutoCAD nicht aktiv")
    6. #End If
    Die Konstante kannst du anstatt im Code auch in den Progekteigenschaften oder in einem eigenen Profil definieren.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich hatte auch schon öfter mal Probleme mit der TypeInitializationException, wobei das bei mir fast immer an statischen Variablen/Objekten lag. Man muss dazu wissen, dass Visual Studio Exceptiones, die im statischen (VB shared) Kontext fliegen, nicht immer sauber fangen kann. Da wird das Debuggen teilweise echt schwer.

    jan99 schrieb:

    Dann ich trotzdem beliebige Verweise setzen oder wird das auch mit Code gemacht?
    Verweise kannst du wohl nicht conditional machen.
    Aber du könntest da den Ladecode für die DLL einbinden.

    Such mal nach PlugIn-System.
    Wenn ich es richtig verstanden habe, ist es das, was du letztendlich willst.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @jan99 Poste mal den Code zur Fehlermeldung.
    Überzeuge Dich in einem neuen Projekt, dass der von Dir zu postende Code diese Exception wirft, so daaa wir das nachvollziehen können.
    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!