2010-04-02 6 views
1

J'ai un assemblage que j'ai réussi à rendre visible à VB6 et cela fonctionne, mais j'ai un problème en réalisant la même chose avec VB5.Rendre l'assemblage .NET COM-visible et fonctionnant pour VB5

Pour VB6, j'ai construit l'assemblage, l'ai rendu COM-visible, enregistré comme un objet COM etc., et l'assemblage apparaît dans la liste Références de VB6, et me permet de l'utiliser avec succès. Le navigateur d'objets affiche également la méthode dans l'assy. Je copiais l'assemblée et son TLB à un poste de travail virtuel utilisé pour le développement VB5 et couru Regasm, apparemment avec succès:

C:\>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 
\regasm arserviceinterface.dll /tlb:arserviceinterface.tlb 
Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.3053 
Copyright (C) Microsoft Corporation 1998-2004. All rights reserved. 

Assembly exported to 'C:\Projects\AR\3rd Party\ARService\arserviceinterface.tlb' 
, and the type library was registered successfully 

Notez que le W virtuel/S est Win2K et ne pas .NET Fx 3.5 sur elle, juste 2,0.

L'assemblage apparaît dans les références pouvant être sélectionnées dans VB5, mais la méthode de l'assemblage n'apparaît pas dans le navigateur d'objets et est généralement inutilisable. Soit il y a une étape à faire que je n'ai pas faite, ou VB5 ne sait pas comment utiliser un tel objet COM. Notez que la configuration de VB5 est sur un poste de travail virtuel, pas le même poste de travail que VB6 est installé.

Des idées? Une chose qui me vint que je pourrais avoir besoin de générer et d'utiliser un nom fort sur le poste de travail en question, mais ...

Répondre

4
  1. Assurez-vous que votre ensemble est construit pas contre et utiliser des fonctionnalités de .Net 3.5
  2. Copiez l'outil OLE/COM Object Viewer (vous pouvez l'obtenir à partir d'un ordinateur sur lequel le Kit de développement Windows est installé). Exécutez-le, allez à Afficher tous les objets, faites défiler la liste jusqu'à votre objet et faites un clic droit dessus pour créer une instance.
    2.1 Si OLE/COM Object Viewer ne peut pas créer une instance, le problème réside dans la façon dont l'objet est enregistré sur la machine, ou comment .Net est installé.
    2.2 Si OLE/COM Object Viewer peut créer une instance, le problème réside dans la consommation de VB5.
  3. Je ne me souviens pas si VB5 prend réellement en charge la liaison anticipée (IUnknown) ou s'il ne prend en charge que la liaison tardive (IDispatch). J'ai la suspicion furtive que VB5 a seulement soutenu des dispinterfaces, et c'est VB5.5 qui a introduit le support pour IUnknown. Cela pourrait donc être votre problème.
Questions connexes