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.
Er zijn twee manieren om een primaire interop-assembly te genereren:
Gebruik de Type Library Importer (Tlbimp.exe) die wordt geleverd door de Windows SDK.
De eenvoudigste manier om primaire interopassembly's te produceren, is door de Tlbimp.exe (Type Library Importer) te gebruiken. Tlbimp.exe biedt de volgende beveiligingsmaatregelen:
- Controleert of er andere geregistreerde primaire interop-assemblies zijn voordat er nieuwe interop-assemblies worden gemaakt voor geneste verwijzingen naar typebibliotheken.
- Kan de primaire interop-assembly niet verzenden als u de container of bestandsnaam niet opgeeft om de primaire interop-assembly een sterke naam te geven.
- Kan geen primaire interop-assembly verzenden als u verwijzingen naar afhankelijke assembly's weglaat.
- Kan geen primaire interop-assembly verzenden als u verwijzingen toevoegt naar afhankelijke assembly's die geen primaire interop-assembly's zijn.
Het handmatig maken van primaire interop-assemblies in broncode met behulp van een taal die voldoet aan de Common Language Specification (CLS), zoals C#. Deze methode is handig wanneer een typebibliotheek niet beschikbaar is.
U moet een cryptografisch sleutelpaar hebben om het assemblybestand met een sterke naam te ondertekenen. Zie Een sleutelpaar maken voor meer informatie.
Een primaire interoperabiliteitsassembly genereren met behulp van Tlbimp.exe
Typ bij de opdrachtprompt:
tlbimptlbfile/primary /keyfile:bestandsnaam/out:assemblynaam
In deze opdracht is tlbfile het bestand met de COM-typebibliotheek, bestandsnaam is de naam van de container of het bestand dat het sleutelpaar bevat en assemblynaam de naam van de assembly die moet worden ondertekend met een sterke naam.
Primaire interop-assemblies kunnen alleen verwijzen naar andere primaire interop-assemblies. Als uw assembly verwijst naar typen uit een COM-typebibliotheek van derden, moet u eerst een primaire interoperabiliteitsassembly van de uitgever verkrijgen voordat u uw primaire interoperabiliteitsassembly kunt genereren. Als u de publicerende partij bent, moet u eerst een primaire interoperabiliteitsassembly genereren voor de afhankelijke typebibliotheek voordat u de verwijzende primaire interoperabiliteitsassembly genereert.
Een afhankelijke primaire interoperabiliteitsassembly met een versienummer dat verschilt van die van de oorspronkelijke typebibliotheek kan niet worden gedetecteerd wanneer deze is geïnstalleerd in de huidige map. U moet de afhankelijke primaire interop-assembly registreren in het Windows-register of de optie /reference gebruiken om ervoor te zorgen dat Tlbimp.exe de afhankelijke DLL vindt.
U kunt ook meerdere versies van een typebibliotheek verpakken. Raadpleeg Procedure: Meerdere versies van typebibliotheken verpakken voor instructies.
Voorbeeld
In het volgende voorbeeld wordt de COM-typebibliotheek LibUtil.tlb geïmporteerd en de assembly LibUtil.dll ondertekend met een sterke naam met behulp van het sleutelbestand CompanyA.snk. Door een specifieke naamruimtenaam weg te laten, produceert dit voorbeeld de standaardnaamruimte. LibUtil
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /out:LibUtil.dll
Voor een meer beschrijvende naam (volgens de naamgevingsrichtlijn VendorName.LibraryName) overschrijft het volgende voorbeeld de standaardbestandsnaam van de assembly en de naam van de naamruimte.
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /namespace:CompanyA.LibUtil /out:CompanyA.LibUtil.dll
In het volgende voorbeeld worden MyLib.tlb en de assembly die verwijst naar CompanyA.LibUtil.dll geïmporteerd, en wordt de assembly CompanyB.MyLib.dll met een sterke naam ondertekend met behulp van het sleutelbestand CompanyB.snk. De naamruimte, CompanyB.MyLiboverschrijft de standaardnaamruimtenaam.
tlbimp MyLib.tlb /primary /keyfile:CompanyB.snk /namespace:CompanyB.MyLib /reference:CompanyA.LibUtil.dll /out:CompanyB.MyLib.dll