Procedure: Primaire interop-assembly's genereren met behulp van Tlbimp.exe
Er zijn twee manieren om een primaire interoperabiliteitsassembly 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 op andere geregistreerde primaire interopassembly's voordat nieuwe interop-assembly's worden gemaakt voor geneste typebibliotheekverwijzingen.
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 assembly's 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 de assembly te ondertekenen met een sterke naam. Zie Een sleutelpaar maken voor meer informatie.
Een primaire interoperabiliteitsassembly genereren met behulp van Tlbimp.exe
Typ bij de opdrachtprompt:
tlbimp tlbfile /primary /keyfile: bestandsnaam /out: assemblyname
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-assembly's kunnen alleen verwijzen naar andere primaire interop-assembly's. Als uw assembly verwijst naar typen van een com-typebibliotheek van derden, moet u een primaire interoperabiliteitsassembly van de uitgever verkrijgen voordat u de primaire interop-assembly kunt genereren. Als u de uitgever bent, moet u een primaire interoperabiliteitsassembly genereren voor de afhankelijke typebibliotheek voordat u de verwijzing naar de primaire interop-assembly 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. Zie Procedure: Meerdere versies van typebibliotheken verpakken voor instructies.
Opmerking
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 (met behulp van VendorName.Naamgevingsrichtlijn libraryname), in het volgende voorbeeld wordt de standaardnaam en naamruimtenaam van het assemblybestand overschreven.
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /namespace:CompanyA.LibUtil /out:CompanyA.LibUtil.dll
In het volgende voorbeeld wordt MyLib.tlb
de assembly geïmporteerd die verwijst naar CompanyA.LibUtil.dll
en de assembly CompanyB.MyLib.dll
ondertekent met een sterke naam met behulp van het sleutelbestand CompanyB.snk
. De naamruimte, CompanyB.MyLib
overschrijft de standaardnaamruimtenaam.
tlbimp MyLib.tlb /primary /keyfile:CompanyB.snk /namespace:CompanyB.MyLib /reference:CompanyA.LibUtil.dll /out:CompanyB.MyLib.dll