Ich habe eine WPF-Anwendung, die ich als eine DLL-COM-Komponente erstellen und installieren mit InstallshieldLE, aber ich habe einige Probleme mit einigen abhängigen DLLs, wenn ich meinen COM-Client ausgeführt.COM-Anwendung referenzierte dlls Fehlerbehebung
Meine WPF-DLL verweist auf zwei andere C# -Dlls (A & B), die sich innerhalb der gleichen VS2012-Lösung befinden.
Meine WPF-DLL hat das Register für COM-Interop-Option aktiviert und bietet eine COM-Schnittstelle zum Ausführen der WPF-GUI-Anwendung.
Ich habe ein C-COM-Client-Programm, das die WPF-Anwendung testet. Das Problem, das ich habe, ist, dass ich einige DLLs von dll_A, die ein Grafikpaket eines Drittanbieters sind, in den Ordner des Client-Programms aufnehmen muss, damit die Anwendung erfolgreich ausgeführt wird. Ich muss dll_A oder dll_B nicht in das lokale Client-Verzeichnis aufnehmen.
Es gibt auch andere (C) dlls, die von der COM-Server-DLL referenziert werden und in der Installation enthalten sind, die nicht im Clientverzeichnis vorhanden sein müssen, daher ist dies schwer zu verstehen.
Ich nehme an, dass dies keine WPF-Frage ist, sondern einfach eine Frage zur Installation des com-Servers in Bezug auf andere referenzierte Assemblys.
Ich habe einige Debug-Meldungen in den primären DLLs ausgegeben, die bestätigen, dass die DLLs A & B zusammen mit der Haupt-COM-DLL vom Installationsort ausgeführt werden. Aber ich bekomme Ausnahmen weiter unten, wenn die DLLs von Drittanbietern im lokalen Client-Ordner fehlen.
Kann jemand mir helfen, dieses Problem bitte zu beheben. Ich kann das Client-Programm erfolgreich vom Installationsort ausführen und bin daher sicher, dass alle erforderlichen Assemblys und DLLs vorhanden sind.
Danke.
Ja, Sie haben Recht. Ich werde die SetDllDirectory-Funktion untersuchen. Danke für deinen Beitrag. – user5265160
@ user5265160: Es kommt mir vor, dass AddDllDirectory/RemoveDllDirectory besser als SetDllDirectory sind. Antwort aktualisiert –
Danke für die Rückmeldung. Dies ist nützlich zu wissen. Mein Problem war COM/.Net verwandt. Eine der abhängigen DLLs wurde mit .NET 4.0 kompiliert, während die anderen mit .NET 4.0 Client Edition kompiliert wurden. Dies scheint in Ordnung zu sein, wenn sich die abhängigen DLLs im selben Verzeichnis wie der COM-Client befinden, aber nicht, wenn sie sich in der COM-Server-DLL befinden. – user5265160