joehuaba
Goto Top

Windows Forms: DLL-Fehlermeldung

Hallo Zusammen,

ich habe in VB.NET ein Tool entwickelt, welches auch schon ganz ordentlich läuft.
Ich verwende außerdem DLL Dateien in meinem Projekt.

Wenn ich die .exe Datei in einen anderen Ordner verschiebe, fehlen die DLL-Dateien und beim Start erscheint eine Fehlermeldung:

dll-fehler

Das ist auch verständlich und ok soweit.

Nun zu meiner Frage:

Ist es möglich diese Fehlermeldung zu unterdrücken, oder abzufangen mit einer "einfachen" MessageBox?
Normalerweise wird die exe ja nicht verschoben oder einzeln ausgeführt, aber wenn doch, wäre eine "schöne" Fehlermeldung erstrebenswert.
Leider bin ich nicht tief genug in der Materie und Google versteht wahrscheinlich nicht, was ich wissen will face-big-smile

Danke im Voraus und Gruß
joehuaba

Content-ID: 666893

Url: https://administrator.de/contentid/666893

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

wiesi200
wiesi200 19.05.2021 um 18:53:31 Uhr
Goto Top
Hallo,

Try and Catch ist was du brauchst.

Wenn du jetzt dein ganzes Projekt so einfasst ist das aber eher schlechter Programmierstiel.
wiesi200
wiesi200 19.05.2021 um 19:21:13 Uhr
Goto Top
Übrigens, kleiner Tipp.
VB.NET ist eine tote Sprache.
https://www.dotnetpro.de/core/net/zukunft-visual-basic-net-2514493.html

War zwar einfach aber Sprachliche zum lernen eher eine Sackgasse.
mbehrens
Lösung mbehrens 19.05.2021 um 20:36:22 Uhr
Goto Top
Zitat von @joehuaba:

ich habe in VB.NET ein Tool entwickelt, welches auch schon ganz ordentlich läuft.

Schon mal Mercury angeschaut, wenn es auch in Zukunft noch VB sein soll?

Ich verwende außerdem DLL Dateien in meinem Projekt.

Wenn ich die .exe Datei in einen anderen Ordner verschiebe, fehlen die DLL-Dateien und beim Start erscheint eine Fehlermeldung:

Ansätze könnten Embedded Resources oder die Verwendung der AppDomain Class sein.
joehuaba
joehuaba 20.05.2021 um 08:00:02 Uhr
Goto Top
Guten Morgen @wiesi200,

ja, try-catch verwendet man normalerweise.
Das Problem ist leider, dass der Fehler nicht nach einem Button_Click o.Ä. erscheint,
sondern beim Öffnen der exe. Er möchte die Ressourcen laden und findet die DLL nicht.
Mir ist leider nicht bewusst, wo und wie ich den Fehler abfangen kann.
joehuaba
joehuaba 20.05.2021 um 14:07:22 Uhr
Goto Top
Hallo @mbehrens,

Dein Tipp mit AppDomain war super!
Folgendermaßen habe ich es gelöst, um keine DLL-Fehlermeldung zum Start zu bekommen:

Private Sub MYExceptionHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
        Dim EX As Exception = e.ExceptionObject
        'MessageBox.Show(EX.StackTrace)  
        writeLog("err", EX.Message.ToString)  
        btnInfoError.Visible = True
End Sub

Private Sub MYThreadHandler(ByVal sender As Object, ByVal e As Threading.ThreadExceptionEventArgs)
        'MessageBox.Show(e.Exception.StackTrace)  
        writeLog("err", e.Exception.ToString)  
        btnInfoError.Visible = True
End Sub


    'LOAD  
Private Sub MYSOFTWARE_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'for regular unhandled stuff  
        Dim currentDomain As AppDomain = AppDomain.CurrentDomain
        AddHandler currentDomain.UnhandledException, AddressOf MYExceptionHandler

        'for threads in forms  
        AddHandler Application.ThreadException, AddressOf MYThreadHandler
End Sub