Je vais supposer que vous n'essayez pas d'écrire une DLL COM, mais plutôt un projet complet qui appelle divers sous-assemblages comme un EXE VB6 appelle une DLL ActiveX. Si vous pouvez être plus précis sur ce que vous essayez de faire, cela m'aiderait mieux.
Plusieurs points à propos de VB.NET par rapport à VB6.
1) Pour les projets .NET uniquement, il n'y a pas d'enregistrement. Si un EXE ou une DLL fait référence à une autre DLL .NET, la seule exigence est que les DLL soient présentes dans le répertoire du parent.
2) Vous pouvez effectuer un enregistrement de style COM pour les applications .NET uniquement en enregistrant l'assembly .NET dans le GAC. Cependant, il existe plusieurs exigences pour ce faire. Faites une recherche sur le .NET GAC et il vous donnera le scoop sur la façon de le faire.
3) Vous pouvez configurer l'assembly .NET pour utiliser COM, auquel cas il fonctionnera selon les règles de COM, y compris l'enregistrement avec regsvr.
Vous trouverez pour le projet .NET uniquement que # 2 ou # 3 ne sont disponibles que dans de rares cas. # 1 s'appliquera pour 90% de vos assemblys DLL. De Cela dépend de votre projet.
Une utilisation courante de CreateObject est de permettre les plug-ins ou les bibliothèques installables. .NET gère cela via l'API Reflection. Avec l'API de réflexion, vous pouvez regarder dans un répertoire, parcourir chaque DLL .NET et voir de quoi il s'agit et créer des objets à partir de ce que vous trouvez. Recherchez .NET Reflection pour lire à ce sujet. Si votre projet est uniquement .NET, je vous recommande de créer un assembly référencé à la fois par l'assemblage maître et par le sous-assemblage individuel qui définissent les interfaces des objets que vous créez. Lorsque vous utilisez l'API de réflexion et déterminez le type d'objet, vous pouvez l'affecter à une variable de cette interface et le coder noramlly avec intellisense et d'autres aides.
Si vous avez d'anciens contrôles COM ActiveX ou des DLL .NET va générer une classe wrapper qui expose les objets ActiveX à .NET. Je voudrais passer un peu de temps à apprendre comment .NET fait cela. Qu'est-ce que je fais créer un projet factice et avoir. NET référence les trucs ActiveX dont j'ai besoin.Je trouve ensuite les projets wrapper et DLL qu'il a fait et les déplace dans une zone centrale. C'est pourquoi lorsque je travaille sur des projets subséquents en utilisant les mêmes éléments ActiveX, je sais où sont tous les wrappers.
Vous n'avez * pas * à installer dans le GAC pour interop. Regasm avec le commutateur codebase vous permettra de placer en dehors du GAC. –
Je ne parlais pas de COM Interop. Mais les différentes façons dont .NET peut partager des assemblages. Vous présumez que l'interlocuteur parlait de COM. Ma réponse ne suppose pas que se concentre plutôt sur la myriade de façons. Assemblages de partage .NET. –