Enregistrer un composant C # COM?
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?
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).
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