Question

J'ai un projet VB.Net qui a besoin d'utiliser une DLL tierce partie pour laquelle il également un ensemble interop. J'ai donc quelque chose comme ceci:

Hummingbird.DM.Server.Interop.PCDClient.dll
PCDClient.dll

J'ai essayé d'ajouter la référence à l'Interop directement dans le projet, mais sur l'exécution du fichier que je suis une erreur COM non enregistrée.

Alors, j'ai essayé l'enregistrement de l'Interop comme suit:

gacutil /if "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

regasm "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

Même après le redémarrage de VS, l'est toujours pas visible assemblage.

Était-ce utile?

La solution

Votre commande regasm détruit les clés de Registre pour le serveur COM. Vous devrez réinstaller. Utilisez uniquement regasm sur votre propre code [ComVisible].

L'une des raisons que vous pourriez avoir des difficultés à utiliser le composant, au-delà tout simplement pas avoir été correctement installé, est parce que vous essayez d'exécuter sur un système d'exploitation 64 bits. Et le composant est 32 bits, de loin le cas le plus courant. Vous devez forcer votre application à fonctionner en mode 32 bits pour pouvoir l'utiliser. Dans le VB.NET IDE, qui est fait avec des propriétés du projet +, onglet Compile, faites défiler vers le bas, Options avancées de compilation, définissez CPU cible sur "x86".

L'outil de dépannage ultime pour des problèmes comme celui-ci est l'utilitaire ProcMon de Sysinternals. Il vous montre comment COM utilise le HKLM \ Software \ Classes de clé CLSID pour rechercher la DLL à la charge.

Autres conseils

Vous vous inscrivez Interop, mais (comme le message d'erreur indique) que vous avez pas enregistré la DLL COM. Essayez ceci:

regsvr32 pdcclient.dll
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top