2008-11-09 6 views
1

Je suis très nouveau sur VB.net. J'ai écrit ces objets dans VB6 avant. Je suis juste perdu dans VB.net, mais (en poussant des cris) je dois apprendre à faire ça. J'ai été googling pendant des heures avec seulement de petits pas en avant. Quelqu'un peut-il poster un lien qui explique comment commencer à finir comment faire?Utilisation de VS 2008 (vb.net) Je dois créer un objet que je peux utiliser dans ASP classique avec CreateObject

J'ai réussi à écrire l'objet de classe, Ce que je ne peux pas dire est comment l'enregistrer et où le nom1 et le nom2 dans le CreateObject ("Nom1.Nom2") viennent.

Regsrv32 ne fonctionnera pas. Il dit "Point d'entrée non trouvé" et ne l'enregistrera pas. En outre, je ne peux pas le déposer dans le répertoire Assemblies. J'ai lu quelque chose à propos d'une commande regasm que l'on utilise, mais je n'arrive pas à faire ce travail non plus.

Merci d'avance pour toute assistance.

Répondre

2

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.

+0

Vous n'avez * pas * à installer dans le GAC pour interop. Regasm avec le commutateur codebase vous permettra de placer en dehors du GAC. –

+0

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. –

1

Vous devez accéder aux propriétés de votre bibliothèque de classes et sélectionner l'option "Enregistrer pour COM interop". Cela rendra votre assembly disponible pour COM.

-1

Vous souhaitez créer ce que l'on appelle un COM Callable Wrapper (aka CCW) pour votre composant .NET. Cela implique essentiellement la configuration de certaines interfaces COM avec certains GUID et l'activation de "Register for COM Interop" dans les propriétés du projet (comme mentionné) ou en utilisant regasm.exe.

Questions connexes