Importation d'une bibliothèque de types sous la forme d'un assembly
Les définitions des types COM résident généralement dans une bibliothèque de types. Les compilateurs conformes CLS produisent quant à eux les métadonnées des types dans un assembly. Ces deux sources d'informations sur les types sont assez différentes. Cette rubrique décrit des techniques permettant de générer des métadonnées à partir d'une bibliothèque de types. L'assembly résultant est appelé assembly d'interopérabilité, et les informations de type qu'il contient permettent aux applications .NET Framework d'utiliser des types COM.
Il existe deux façons de mettre ces informations de type à disposition pour votre application :
En utilisant des assemblys d'interopérabilité au moment du design : en commençant par le .NET Framework version 4, vous pouvez instruire le compilateur afin qu'il incorpore les informations de type à partir d'un assembly d'interopérabilité dans votre fichier exécutable. Le compilateur incorpore uniquement les informations de type que votre application utilise. Vous n'avez pas à déployer l'assembly d'interopérabilité avec votre application. Il s'agit de la technique recommandée.
En déployant des assemblys d'interopérabilité : vous pouvez créer une référence standard à l'assembly d'interopérabilité. Dans ce cas, l'assembly d'interopérabilité doit être déployé avec votre application. Si vous utilisez cette technique et que vous n'utilisez pas un composant COM privé, référencez toujours l'assembly PIA publié par l'auteur du composant COM que vous prévoyez d'incorporer dans votre code managé. Pour plus d'informations sur la production et l'utilisation d'assemblys d'interopérabilité, consultez Assemblys PIA (Primary Interop Assembly).
Lorsque vous utilisez des assemblys d'interopérabilité au moment du design, vous pouvez incorporer les informations de type de l'assembly PIA (Primary Interop Assembly) publié par l'auteur du composant COM. Toutefois, vous n'avez pas à déployer l'assembly PIA avec votre application.
L'utilisation d'assemblys d'interopérabilité au moment du design réduit la taille de votre application, car la plupart des applications n'utilisent pas toutes les fonctionnalités d'un composant COM. Le compilateur est très efficace lorsqu'il incorpore les informations de type ; si votre application utilise uniquement certaines des méthodes sur une interface COM, le compilateur n'incorpore pas les méthodes inutilisées. Lorsqu'une application qui a incorporé les informations de type interagit avec une autre application du même type, ou interagit avec une application qui utilise un assembly PIA (Primary Interop Assembly), le Common Language Runtime utilise des règles d'équivalence du type pour déterminer si deux types avec le même nom représentent le même type COM. Vous n'avez pas à savoir ces règles pour utiliser des objets COM. Toutefois, si vous vous intéressez aux règles, consultez Équivalence de type et types interop incorporés.
Génération de métadonnées
Les bibliothèques de types COM peuvent être des fichiers autonomes qui ont une extension .tlb, telle que Loanlib.tlb. Certaines bibliothèques de types sont incorporées dans la section de ressources d'un fichier .dll ou .exe. D'autres sources d'informations de bibliothèque de types sont des fichiers .olb et .ocx.
Une fois que vous avez trouvé la bibliothèque de types qui contient l'implémentation de votre type COM cible, vous disposez des options suivantes pour générer un assembly d'interopérabilité contenant des métadonnées de type :
Visual Studio
Visual Studio convertit automatiquement des types COM dans une bibliothèque de types en métadonnées dans un assembly. Pour obtenir des instructions, consultez Comment : ajouter des références aux bibliothèques de types et Procédure pas à pas : incorporation d'informations de type provenant d'assemblys Microsoft Office (C# et Visual Basic).
Type Library Importer (Tlbimp.exe)
Cet importateur fournit des options de ligne de commande pour ajuster les métadonnées dans le fichier d'interopérabilité résultant, importe des types d'une bibliothèque de types existante et génère un assembly et un espace de noms. Pour obtenir des instructions, consultez Comment faire : générer des assemblys d'interopérabilité à partir de bibliothèques de types.
Classe System.Runtime.InteropServices.TypeLibConverter
Cette classe fournit des méthodes pour convertir des coclasses et des interfaces dans une bibliothèque de types en métadonnées dans un assembly. Il produit la même sortie de métadonnées que Tlbimp.exe. Toutefois, la classe TypeLibConverter peut convertir une bibliothèque de types en mémoire en métadonnées contrairement à Tlbimp.exe.
Wrappers personnalisés
Lorsqu'une bibliothèque de types est indisponible ou incorrecte, vous pouvez opter pour la création d'une définition dupliquée de la classe ou de l'interface dans du code source managé. Vous pouvez ensuite compiler le code source avec un compilateur qui cible le runtime pour produire des métadonnées dans un assembly.
Pour définir manuellement des types COM, vous devez avoir accès aux éléments suivants :
des descriptions précises des coclasses et des interfaces qui sont définies ;
un compilateur, tel que le compilateur C#, pouvant générer les définitions des classes .NET Framework appropriées ;
une connaissance des règles de conversion de bibliothèque de types en assembly.
L'écriture dans un wrapper personnalisé est une technique avancée. Pour obtenir des informations supplémentaires sur la manière de générer un wrapper personnalisé, consultez Personnalisation de wrappers standard.
Pour plus d'informations sur le processus d'importation COM Interop, consultez Résumé de la conversion d'une bibliothèque de types en assembly.
Voir aussi
Tâches
Comment : ajouter des références aux bibliothèques de types
Comment : générer des assemblys d'interopérabilité à partir de bibliothèques de types
Référence
Tlbimp.exe (Type Library Importer)
Concepts
Exposition de composants COM au .NET Framework
Personnalisation de wrappers standard
Utilisation de types COM dans du code managé
Compilation d'un projet d'interopérabilité
Déploiement d'une application d'interopérabilité
Autres ressources
Résumé de la conversion d'une bibliothèque de types en assembly