Hallo,
Wenn ich ein umfangreiches Programm mit vielen externen Bibliotheken veröffentlichen will, nervt es mich
dass alle DLLs im selben Verzeichnis der EXE liegen müssen. Ich finde übersichtlicher, alle DLLs in einem Unterordner
zu speichern, der beispielsweise "Libraries" heißt.
Sollten die Namespaces eurer Libraries keine Sonderzeichen/Leerzeichen enthalten, kann man dafür einen Allgemeingültigen Code
verwenden.
Folgender Code muss in den Anwendungsereignissen eures Programms geschrieben werden (Projekteigenschaften > Anwendung > Anwendungsereignisse anzeigen):
Ihr solltet natürlich nicht vergessen das Verzeichnis zu erstellen und die DLLs dort reinzuschieben
mfg vredesbyrD
Wenn ich ein umfangreiches Programm mit vielen externen Bibliotheken veröffentlichen will, nervt es mich
dass alle DLLs im selben Verzeichnis der EXE liegen müssen. Ich finde übersichtlicher, alle DLLs in einem Unterordner
zu speichern, der beispielsweise "Libraries" heißt.
Sollten die Namespaces eurer Libraries keine Sonderzeichen/Leerzeichen enthalten, kann man dafür einen Allgemeingültigen Code
verwenden.
Folgender Code muss in den Anwendungsereignissen eures Programms geschrieben werden (Projekteigenschaften > Anwendung > Anwendungsereignisse anzeigen):
VB.NET-Quellcode
- Namespace My
- ' The following events are available for MyApplication:
- '
- ' Startup: Raised when the application starts, before the startup form is created.
- ' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
- ' UnhandledException: Raised if the application encounters an unhandled exception.
- ' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
- ' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
- Partial Friend Class MyApplication
- Private WithEvents MyDomain As AppDomain = AppDomain.CurrentDomain
- Private Function MyDomain_AssemblyResolve(ByVal sender As Object, ByVal args As System.ResolveEventArgs) As System.Reflection.Assembly Handles MyDomain.AssemblyResolve
- Dim dll_file As String = System.AppDomain.CurrentDomain.BaseDirectory + "Libraries\" + args.Name.Split(CChar(","))(0) + ".dll"
- If System.IO.File.Exists(dll_file) Then
- Return System.Reflection.Assembly.LoadFile(dll_file)
- Else
- Return Nothing
- End If
- End Function
- End Class
- End Namespace
Ihr solltet natürlich nicht vergessen das Verzeichnis zu erstellen und die DLLs dort reinzuschieben
mfg vredesbyrD
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „vredesbyrD“ ()