Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
Deze richtlijnen zijn specifiek voor .NET Framework. Voor moderne .NET COM-interoperabiliteit gebruikt u door de bron gegenereerde COM-interoperabiliteit of de System.Runtime.InteropServices.ComWrappers API. Zie com-interoperabiliteitsoverzicht en COM-brongeneratie voor meer informatie.
Klassen kunnen alleen via COM-interoperabiliteit worden gemarshald en worden altijd als interfaces gemarshald. In sommige gevallen wordt de interface die wordt gebruikt om de klasse te marshalen, de klasse-interface genoemd. Zie COM Callable Wrapper voor informatie over het overschrijven van de klasse-interface met een interface van uw keuze.
Hoewel elke ontwikkelaar die COM-typen van een .NET Framework-toepassing wil gebruiken, een interop-assembly kan genereren, is dit een probleem. Telkens wanneer een ontwikkelaar een COM-typebibliotheek importeert en ondertekent, maakt de ontwikkelaar een set unieke typen die niet compatibel zijn met de typen die zijn geïmporteerd en ondertekend door een andere ontwikkelaar. De oplossing voor dit type incompatibiliteitsprobleem is voor elke ontwikkelaar om de door de leverancier geleverde en ondertekende primaire interop-assembly te verkrijgen.
Als u van plan bent COM-typen van derden bloot te stellen aan andere toepassingen, gebruikt u altijd de primaire interop-assembly die afkomstig is van dezelfde uitgever als de typebibliotheek die erdoor wordt gedefinieerd. Naast gegarandeerde typecompatibiliteit worden primaire interoperabiliteitsassembly's vaak aangepast door de leverancier om de interoperabiliteit te verbeteren.
Zelfs als u geen COM-typen van derden beschikbaar wilt maken, kan het gebruik van de primaire interop-assembly de taak van het samenwerken met COM-onderdelen vereenvoudigen. Deze strategie biedt echter geen bescherming tegen wijzigingen die een leverancier kan aanbrengen in typen die zijn gedefinieerd in een primaire interop-assembly. Wanneer uw toepassing dergelijke isolatie vereist, genereert u uw eigen interoperabiliteitsassembly in plaats van de primaire interoperabiliteitsassembly te gebruiken.
U moet alle aangeschafte primaire interop-assembly's registreren op uw ontwikkelcomputer voordat u ernaar kunt verwijzen met Visual Studio. Visual Studio zoekt en gebruikt een primaire interoperabiliteitsassembly wanneer u voor het eerst naar een type uit een COM-typebibliotheek verwijst. Als Visual Studio de primaire interop-assembly die is gekoppeld aan de typebibliotheek niet kan vinden, wordt u gevraagd deze te verkrijgen of een interop-assembly te maken. Op dezelfde manier gebruikt de Type Library Importer (Tlbimp.exe) ook het register om primaire interop-assembly's te zoeken.
Hoewel het niet nodig is om primaire interop-assembly's te registreren, tenzij u Visual Studio wilt gebruiken, biedt registratie twee voordelen:
- Een geregistreerde primaire interop-assembly is duidelijk aangegeven in de registersleutel van de oorspronkelijke typebibliotheek. Registratie is de beste manier om een primaire interoperabiliteitsassembly op uw computer te kunnen vinden.
- U kunt voorkomen dat u per ongeluk een nieuwe interop-assembly genereert en gebruikt als u op een bepaald moment in de toekomst Visual Studio gebruikt om te verwijzen naar een type waarvoor u een niet-geregistreerde primaire interop-assembly hebt.
Gebruik het hulpprogramma voor assemblyregistratie (Regasm.exe) om een primaire interoperabiliteitsassembly te registreren.
Een primaire interop-assembly registreren
Als u een primaire interoperabiliteitsassembly wilt registreren, typt u bij de opdrachtprompt:
regasm <assemblyname>
In deze opdracht is assemblyname de bestandsnaam van de assembly die is geregistreerd. Regasm.exe voegt een vermelding toe voor de primaire interop-assembly onder dezelfde registersleutel als de oorspronkelijke typebibliotheek.
Voorbeeld
In het volgende voorbeeld wordt de CompanyA.UtilLib.dll primaire interop-assembly geregistreerd.
regasm CompanyA.UtilLib.dll