J'ai une application WPF, que je compile en tant que composant COM dll et que j'installe en utilisant installshieldLE, mais j'ai quelques problèmes avec certaines DLLs dépendantes, lors de l'exécution de mon client COM.Application COM référencée dlls dépannage
Mon dll WPF référence deux autres dll C# (A & B) qui résident dans la même solution VS2012.
Mon fichier WPF dll a vérifié le registre pour l'option COM Interop et fournit une interface COM pour exécuter l'application GUI WPF.
J'ai un programme client C COM qui teste l'application WPF. Le problème que je rencontre est que j'ai besoin d'inclure certaines DLL référencées par dll_A, (qui est un paquetage graphique tiers) dans le dossier du programme client pour que l'application fonctionne correctement. Je n'ai pas besoin d'inclure dll_A ou dll_B dans le répertoire client local.
De plus, il existe d'autres DLL (C) référencées par la DLL du serveur COM et incluses dans l'installation, qui n'ont pas besoin d'être présentes dans le répertoire client, ce qui est difficile à comprendre. Je suppose que ce n'est pas une question WPF mais simplement une question sur l'installation du serveur COM par rapport à d'autres assemblages référencés.
J'ai sorti des messages de débogage dans les DLL principales qui confirment que les dlls A & B, ainsi que la DLL principale COM sont exécutées depuis l'emplacement d'installation. Mais j'obtiens des exceptions plus loin sur la ligne quand les dlls tiers sont manquants dans le dossier client local.
Quelqu'un peut-il m'aider à résoudre ce problème s'il vous plaît. Je peux exécuter le programme client avec succès à partir de l'emplacement d'installation et je suis donc certain que tous les assemblys et dll requis sont présents.
Merci.
Oui, vous avez raison. Je vais étudier la fonction SetDllDirectory. Merci pour votre contribution. – user5265160
@ user5265160: Il me semble que AddDllDirectory/RemoveDllDirectory sont meilleurs que SetDllDirectory. Réponse mise à jour –
Merci pour les commentaires. C'est utile à savoir. Mon problème était lié à COM/.Net. L'une des dll dépendantes a été compilée en utilisant .Net 4.0, tandis que les autres ont été compilées en utilisant l'édition client .Net 4.0. Cela semble être correct lorsque les DLLs dépendantes sont dans le même répertoire que le client COM mais pas quand ils sont dans la DLL du serveur COM. – user5265160