2011-07-11 5 views
8

J'ai créé hier un objet COM avec C# qui a généré trois fichiers dans le répertoire bin/release de mon projet VS 2010 (comclass.dll, comclass.pdb et comclass.tlb). Maintenant, quand je construis la solution dans le projet, VS enregistre la classe pour moi automatiquement sur le PC de développement et je n'ai aucun problème pour accéder à l'objet COM et ses méthodes de, disons, Powershell. Toutefois, lorsque je copie les trois fichiers sur une autre machine et essayer d'enregistrer la dll avec regsvr32, il me dit queEnregistrement d'un objet COM créé avec VS C# 2010

le module « comclass.dll » a été chargé mais le DllRegisterServer point d'entrée n'a pas été trouvé.

Assurez-vous que "comclass.dll" est un fichier DLL ou OCX valide, puis réessayez.

En utilisant regasm avec le paramètre /tlb sur le fichier .tlb me donne un message similaire. Donc, je suis un peu perplexe. Quelqu'un sait comment je devrais partir d'ici?

Répondre

11

copie le dll (et éventuellement le pdb si vous voulez des chemins de fichiers et les numéros de ligne dans vos traces de la pile). Voici comment vous l'enregistrez et le TLB est créé:

"%WINDIR%\Microsoft.NET\Framework\v2.0.50727\regasm.exe" comclass.dll /tlb /nologo /codebase 

Depuis Visual Studio, il enregistre avec succès, qui pourrait bien fonctionner. Sinon, vous pouvez également ouvrir le panneau de sortie tout en faisant une reconstruction et voir comment Visual Studio appelle regasm.

+0

Merci Joe. C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727> regasm c: \ comtest \ comclass.dll/tlb/nologo/codebase Types enregistrés avec succès Assembly exporté vers 'c: \ comtest \ comclass.tlb', et la bibliothèque de type a été enregistrée avec succès. Exactement ce que je voulais. Je vais mettre ça dans mon blog. Merci encore. – deutschZuid