Question

J'ai développé un composant C # com que j'utilise à partir de c ++ géré. Sur ma machine de développement quand tout fonctionne bien. Cependant, lorsque je distribue les fichiers, j'ai reçu une erreur indiquant que le composant n'a pas été enregistré. Lorsque j'essaie de regsvr32 sur la dll, cela me donne une erreur (les dlls C # ne peuvent pas être enregistrées). Comment enregistrer correctement cette dll COM?

Était-ce utile?

La solution

Vous utilisez regasm avec < code> / codebase (et il doit être comVisible [mais comme Patrick McDonald est correctement affiché, vous avez déjà dépassé cela car il fonctionne localement])

Autres conseils

Utilisez RegAsm avec siwtch / codebase si votre assembly n'est pas installé dans le GAC (Global Assembly Cache).

Vous trouverez d'autres commutateurs ici .

Je trouve que vous devez normalement faire:

regasm /codebase

Parce que COM a besoin de connaître l'emplacement exact de votre assembly pour pouvoir le charger.

Comme d'autres l'ont suggéré, vous devrez définir votre projet C # comme étant visible pour COM (paramètres du projet, application, bouton d'informations sur l'assemblage).

Vous pouvez obtenir un contrôle plus précis des classes visibles ou non en utilisant l'attribut [ComVisible (true)] / [ComVisible (false)] avant chaque classe

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