Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Note
Cette aide est spécifique à .NET Framework. Pour l’interopérabilité COM .NET moderne, utilisez l’interopérabilité COM générée par le code source ou l’API System.Runtime.InteropServices.ComWrappers. Pour plus d’informations, consultez la vue d’ensemble de l’interopérabilité COM et la génération de source COM.
Il existe deux façons de générer un assembly d’interopérabilité principal :
En utilisant l’outil Tlbimp.exe (Importateur de bibliothèques de types) fourni par le SDK Windows.
La façon la plus simple de générer des assemblies d’interop primaires consiste à utiliser Tlbimp.exe (importateur de bibliothèques de types). Tlbimp.exe offre les protections suivantes :
- Il vérifie les autres assemblys PIA inscrits avant de créer de nouveaux assemblys PIA pour les références de bibliothèque de types imbriquées.
- Ne génère pas l’assembly d’interopérabilité primaire si vous ne spécifiez ni le conteneur ni le nom de fichier afin de lui attribuer un nom fort.
- Il n'émet pas d'assembly PIA si vous omettez les références aux assemblys dépendants.
- Il n'émet pas d'assembly PIA si vous ajoutez des références à des assemblys dépendants qui ne sont pas des assemblys PIA.
Création manuelle de bibliothèques d’interopérabilité principales (PIA) dans le code source à l’aide d’un langage conforme à la spécification Common Language Specification (CLS), comme C#. Cette approche est utile quand aucune bibliothèque de types n'est disponible.
Pour signer l’assemblage avec un nom fort, vous devez disposer d’une paire de clés cryptographiques. Pour plus d’informations, consultez Création d’une paire de clés.
Générer un assembly d’interopérabilité principal à l’aide de Tlbimp.exe
À l’invite de commandes, tapez :
tlbimptlbfile/primary /keyfile :filename/out :assemblyname
Dans cette commande, fichiertlb désigne le fichier contenant la bibliothèque de types COM, nomfichier désigne le nom du conteneur ou du fichier contenant la paire de clés, et nom de l’assembly désigne le nom de l’assembly à signer avec un nom fort.
Les assemblys PIA peuvent référencer uniquement d'autres assemblys PIA. Si votre assembly référence des types provenant d’une bibliothèque de types COM tierce, vous devez obtenir une assembly d’interopérabilité primaire auprès de l’éditeur avant de pouvoir générer votre assembly d’interopérabilité primaire. Si vous êtes l’éditeur, vous devez générer un assembly d’interop principal pour la bibliothèque de types dépendante avant de générer l’assembly d’interop principal référençant celle-ci.
Un assembly d’interop principal dépendant dont le numéro de version diffère de celui de la bibliothèque de types d’origine n’est pas détectable lorsqu’il est installé dans le répertoire en cours. Vous devez soit enregistrer l’assembly d’interop principal dépendant dans le Registre de Windows, soit utiliser l’option /reference afin de garantir que Tlbimp.exe trouve la DLL dépendante.
Vous pouvez également encapsuler plusieurs versions d'une bibliothèque de types. Pour obtenir des instructions, consultez Guide pratique pour encapsuler plusieurs versions de bibliothèques de types.
Exemple
Dans l'exemple suivant, la bibliothèque de types COM LibUtil.tlb est importée et l'assembly LibUtil.dll est signé avec un nom fort à l'aide du fichier de clé CompanyA.snk. En ne spécifiant pas de nom d'espace de noms, cet exemple génère l'espace de noms par défaut LibUtil.
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /out:LibUtil.dll
Pour un nom plus descriptif (qui utilise la règle de nommage Nom_fournisseur.Nom_bibliothèque), l’exemple suivant remplace le nom de fichier d’assembly et le nom d’espace de noms par défaut.
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /namespace:CompanyA.LibUtil /out:CompanyA.LibUtil.dll
L'exemple suivant importe MyLib.tlb, qui référence CompanyA.LibUtil.dll, et signe l'assembly CompanyB.MyLib.dll avec un nom fort à l'aide du fichier de clé CompanyB.snk. L'espace de noms CompanyB.MyLib remplace le nom d'espace de noms par défaut.
tlbimp MyLib.tlb /primary /keyfile:CompanyB.snk /namespace:CompanyB.MyLib /reference:CompanyA.LibUtil.dll /out:CompanyB.MyLib.dll