Comment appeler un assembly Visual Basic .NET ou Visual Basic 2005 de Visual Basic 6.0

Traductions disponibles Traductions disponibles
Numéro d'article: 817248 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

INTRODUCTION

Cet article décrit explique comment utiliser Microsoft Visual Basic .NET ou Microsoft Visual Basic 2005 pour créer un assembly géré qui peut être appelée à partir de Microsoft Visual Basic 6.0.

Plus d'informations

Instructions pour exposer les types .NET pour COM

Lorsque vous souhaitez exposer les types dans un assembly Microsoft .NET vers les applications COM (Component Object Model), envisagez les exigences d'interopérabilité COM suivantes au moment du design. Géré types ( classe , interface , structure , énumération et d'autres) interagissent également avec les applications COM client lorsque vous suivez ces instructions :
  • Définir des interfaces et les implémenter explicitement dans les classes. Interopérabilité COM fournit un mécanisme pour générer automatiquement une interface qui contient tous les membres de la classe et les membres de sa classe de base. Toutefois, il est préférable fournir des interfaces explicites et leur implémentation explicitement.
  • Déclarer des types de tout gérés que vous souhaitez exposer à COM comme public. Types publics dans un assembly sont enregistrés et exportées vers la bibliothèque de type. Par conséquent, seuls les types publics sont visibles par COM.
  • Déclarer tous les membres type (méthodes, propriétés, champs et les événements) que vous souhaitez exposer à COM comme public. Membres de types publics doivent également être publiques soit visible par COM. Par défaut, tous les types publics et des membres sont visibles. Utilisez l'attribut ComVisibleAttribute si vous avez masquer un type ou un membre de visibilité de type ou membre du contrôle pour les applications COM client.
  • Types doivent être un constructeur public par défaut à être instanciés via COM. gérés, types publics sont visibles par COM. Toutefois, sans un constructeur public par défaut (un constructeur sans argument), COM clients ne peuvent pas créer une instance du type. Clients COM peuvent toujours utiliser le type si le type est instancié dans une autre manière et l'instance est renvoyée au client COM. Vous pouvez inclure surchargées constructeurs qui acceptent des arguments différents pour ces types. Toutefois, les constructeurs qui acceptent des arguments peuvent uniquement s'appeler à partir de code géré (.NET).
  • Les types ne peuvent pas être abstraites. Ni clients COM ni .NET clients peuvent créer des instances de types abstract.
  • Utiliser le modèle COMClass dans Visual Basic .NET ou Visual Basic 2005. Lorsque vous ajoutez une nouvelle classe que vous souhaitez exposer les applications COM, utilisez le modèle COMClass qui sont fournies par Visual Basic.NET ou par Visual Basic 2005. Le modèle COMClass crée une classe qui contient l'attribut COMClassAttribute et qui génère les identificateurs globaux uniques (GUID) pour le CLSID, l'ID d'interface et l'ID d'événement exposés par le type de. En outre, le modèle COMClass crée un constructeur public sans paramètres. C'est le moyen plus simple pour créer une nouvelle classe qui suit les instructions pour la création de types pouvant être appelé par COM.

Enregistrement de l'assembly .NET pour COM interop et de créer une bibliothèque de type

Pour Visual Basic 6.0 interagir correctement avec un composant managé, vous devez inscrire l'assembly pour COM interop et générer une bibliothèque de type. Cet enregistrement doit être exécutée sur chaque ordinateur où un lot COM interaction application client avec l'assembly. La bibliothèque de type fournit des informations type sur les types exposés dans l'assembly COM les applications clientes. Le processus pour cela varie selon si vous travaillez sur l'ordinateur de développement ou de l'ordinateur de destination.

Sur l'ordinateur de développement Microsoft Visual Studio .NET ou Visual Studio 2005 crée automatiquement une bibliothèque de type et inscrit pendant le processus de génération si la case à cocher Enregistrer pour COM Interop est activée sous Propriétés de configuration du projet. Si vous avez utilisé le modèle COMClass lorsque vous avez créé la classe, Visual Studio .NET ou Visual Studio 2005 sélectionne automatiquement le Registre pour COM Interop case à cocher. Pour vérifier que la case à cocher Enregistrer pour COM Interop est sélectionnée dans Visual Studio .NET ou Visual Studio 2005, procédez comme suit :
  1. Démarrez Visual Studio .NET ou Visual Studio 2005.
  2. Ouvrez la solution qui contient le projet que vous souhaitez créer pour COM interop.
  3. Dans le menu Affichage , cliquez sur Solution Explorer .
  4. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet que vous souhaitez créer pour COM interop, puis cliquez sur Propriétés .
  5. Cliquez sur Propriétés de configuration , puis cliquez sur le n?ud de créer .

    note Dans Visual Studio 2005, cliquez sur Compiler dans le volet gauche.
  6. Cliquez pour sélectionner la Registre pour COM Interop case à cocher. Cette option est uniquement activée de projets de bibliothèque de classe.
  7. Cliquez sur OK pour fermer la propriété pages boîte de dialogue.
Si Visual Studio .NET ou Visual Studio 2005 n'est pas installé ou si vous devez générer et enregistrer un fichier de bibliothèque (.tlb) type de l'assembly géré manuellement, utilisez l'outil Enregistrement de transactions d'assemblage (RegAsm.exe) avec la /TLB basculer. Vous devez également utiliser le commutateur/base de code si l'assembly géré est un assembly privé et que vous souhaitez placer l'assembly géré dans un dossier différent de l'opération ordinateur hôte (EXE).

Un assembly privé est déployé avec une application et est disponible pour l'utilisation exclusive de cette application. Autres applications ne partagent pas l'assembly privé. Assemblys privées sont conçus pour être installé dans le même dossier que le processus ordinateur hôte (EXE). Avec une application client COM, cela signifie que l'assembly se trouve dans le même dossier que cette application. Un assembly partagé est disponible pour utilisation par plusieurs applications sur l'ordinateur. Pour créer un assembly partagé, vous devez signer l'assembly avec un nom fort et installer l'assembly dans le Global Assembly Cache (GAC) sur l'ordinateur de destination.

Pour plus savoir comment signer l'assembly avec un nom fort et installer l'assembly dans le Global Assembly Cache (GAC), reportez-vous au adresse site Web de Microsoft à l'adresse suivante :
http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx
Vous devez utiliser les deux le /TLB : commutateur et le / la base de code passer que vous enregistrez l'assembly. Le /TLB : commutateur génère et enregistre une bibliothèque de type et le commutateur/base de code enregistre l'emplacement de l'assembly géré dans le Registre Windows. Si vous n'utilisez pas le commutateur/base de code et l'assembly n'a pas été installé dans le Global Assembly Cache (GAC), vous devez placer une copie de l'assembly dans le dossier de chaque application de client COM (EXE) afin que l'assembly peut être localisé par le common language runtime (CLR).

Pour générer et enregistrer une bibliothèque de type et enregistrer l'emplacement de l'assembly géré, tapez la commande suivante à l'invite de commandes :
RegAsm AssemblyName.dll /tlb : FileName.tlb FileName.tlb/base de code

Créer un assembly de pouvant être appelé par COM dans Visual Basic .NET

  1. Démarrez Visual Studio .NET ou Visual Studio 2005.
  2. Dans le menu Fichier , pointez sur Nouveau , puis cliquez sur projet .
  3. Sous types de projets , cliquez sur projets Visual Basic .

    note Dans Visual Studio2005 cliquez sur Visual Basic sous types de projet .
  4. Sous modèles , cliquez sur classe bibliothèque .
  5. Nommez le projet TestProj, puis cliquez sur OK .

    Par défaut, Class1 est créé.
  6. Dans le menu Affichage , cliquez sur Solution Explorer .
  7. Cliquez avec le bouton droit sur Class1.vb , puis cliquez sur Supprimer . Cliquez sur OK pour confirmer la suppression du fichier source Class1.vb.
  8. Dans le menu projet , cliquez sur Ajouter classe .
  9. Sous modèles , cliquez sur classe COM .
  10. Nom de la classe COMClass1.vb, puis cliquez sur Ouvrir

    COMClass1 est créé avec le code suivant. _
    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1
    
    #Region "COM GUIDs"
        ' These  GUIDs provide the COM identity for this class 
        ' and its COM interfaces. If you change them, existing 
        ' clients will no longer be able to access the class.
        Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"
        Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"
        Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"
    #End Region
    
        ' A creatable COM class must have a Public Sub New() 
        ' without parameters. Otherwise, the class will not be 
        ' registered in the COM registry and cannot be created 
        ' through CreateObject.
        Public Sub New()
            MyBase.New()
        End Sub
    
    End Class
  11. Ajoutez la fonction suivante à COMClass1.
       Public Function myFunction() As Integer
          Return 100
       End Function
  12. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Project Name, puis cliquez sur Propriétés .
  13. Sous Propriétés de configuration , cliquez sur Créer .
  14. Vérifiez que le Registre pour COM Interop vérifier case est activée et puis cliquez sur OK .
  15. Dans le menu Générer , cliquez sur Créer solution pour générer le projet.
  16. Démarrez Visual Basic 6.0.
  17. Dans le menu Fichier , cliquez sur Nouveau projet , puis cliquez sur EXE standard dans la boîte de dialogue Nouveau projet .

    Par défaut, un formulaire est nommé Form1 est créé.
  18. Dans le menu projet , cliquez sur Références .
  19. Dans la liste Références disponibles , double-cliquez sur pour sélectionner TestProj et puis cliquez sur OK .
  20. Ajouter un bouton de commande à l'écran.
  21. Double-cliquez sur Command1 pour ouvrir le code de fenêtre.
  22. Ajoutez le code suivant à l'événement Command1_Click .
    Dim myObject As TestProj.COMClass1
    Set myObject = New TestProj.COMClass1
    MsgBox myObject.myFunction
  23. Dans le menu exécuter , cliquez sur Démarrer .
  24. Cliquez sur le bouton de commande.

    Vous devez recevez un message indiquant 100.

Références

Pour plus d'informations, reportez-vous au site de Web Microsoft suivant :
Interopérabilité avec du code non managé
http://msdn2.microsoft.com/en-us/library/sd10k43k(vs.71).aspx

Propriétés

Numéro d'article: 817248 - Dernière mise à jour: lundi 3 décembre 2007 - Version: 6.7
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 6.0 Édition initiation
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Mots-clés : 
kbmt kbvs2005applies kbvs2005swept kbnamespace kbdll kbcominterop kbinterop kbautomation kbhowtomaster KB817248 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 817248
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com