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.
Les classes peuvent être marshalées seulement par COM Interop et sont toujours marshalées en tant qu’interfaces. Dans certains cas, l’interface utilisée pour marshaler la classe est appelée interface de classe. Pour plus d’informations sur la redéfinition de l’interface de classe par une interface de votre choix, consultez COM Callable Wrapper.
Même s'il est possible d'utiliser des types COM à partir d'une application .NET Framework pour générer un assembly d'interopérabilité, une telle utilisation pose problème. Chaque fois qu'un développeur importe et signe une bibliothèque de types COM, il crée un ensemble de types uniques qui sont incompatibles avec ceux importés et signés par un autre développeur. La solution à ce problème d’incompatibilité de type consiste, pour chaque développeur, à obtenir l’assembly d’interop principale fournie et signée par le fournisseur.
Si vous envisagez d'exposer des types COM tiers à d'autres applications, utilisez toujours l'assembly d’interopérabilité principale (PIA) fourni par le même fournisseur que la bibliothèque de types qu’il définit. En plus de garantir la compatibilité de type, les assemblys d’interopérabilité primaires sont souvent personnalisés par l’éditeur pour améliorer l’interopérabilité.
Même si vous ne prévoyez pas d’exposer des types COM tiers, l’utilisation de l’assembly d’interopérabilité principal peut faciliter l’interopérabilité avec des composants COM. Toutefois, cette stratégie n'offre aucune protection contre les modifications qu'un fournisseur pourrait apporter aux types définis dans un assembly d'interop principal (PIA). Si votre application nécessite une telle isolation, générez votre propre assembly d’interopérabilité au lieu d’utiliser l’assembly d’interopérabilité principal.
Vous devez enregistrer toutes les bibliothèques d’interop primaires acquises sur votre ordinateur de développement avant de pouvoir les référencer avec Visual Studio. Visual Studio recherche et utilise un assembly d’interopérabilité principal la première fois que vous faites référence à un type dans une bibliothèque de types COM. Si Visual Studio ne parvient pas à localiser l’assembly principal d’interopérabilité (PIA) associé à la bibliothèque de types, il vous invite à l’obtenir ou vous propose de créer à la place un assembly d’interopérabilité. De même, l’outil Importateur de bibliothèques de types (Tlbimp.exe) utilise également le Registre pour localiser les assemblys d’interopérabilité primaires.
Bien qu’il ne soit pas nécessaire d’enregistrer les assemblys d’interopérabilité principaux (PIA), sauf si vous prévoyez d’utiliser Visual Studio, cet enregistrement offre deux avantages :
- Un assembly d’interop principal enregistré est clairement indiqué dans la clé de registre de la bibliothèque de types d’origine. L’enregistrement est le meilleur moyen de localiser un assembly d’interop principal sur votre ordinateur.
- Vous pouvez éviter de générer et d’utiliser accidentellement un nouvel assembly d’interopérabilité si, à l’avenir, vous utilisez Visual Studio pour faire référence à un type pour lequel vous disposez d’un assembly d’interopérabilité principal non enregistré.
Utilisez l’outil Assembly Registration Tool (Regasm.exe) pour enregistrer un assembly d’interop principal.
Enregistrer un assembly d’interopérabilité principal
Pour inscrire un assembly d’interopérabilité principal, tapez :
regasm <assemblyname>
Dans cette commande, assemblyname est le nom du fichier de l’assembly qui est enregistré. Regasm.exe ajoute une entrée pour l'assembly d'interop principal dans la même clé de Registre que la bibliothèque de types d'origine.
Exemple
L'exemple suivant enregistre l'assembly d'interop primaire CompanyA.UtilLib.dll.
regasm CompanyA.UtilLib.dll