Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Note
Den här vägledningen är specifik för .NET Framework. För modern .NET COM-interop använder du källgenererad COM-interop eller System.Runtime.InteropServices.ComWrappers-API:et. Mer information finns i ÖVERSIKT över COM-interop och COM-källgenerering.
Det finns två sätt att generera en primär interop-sammansättning:
Använda typbiblioteksimportören (Tlbimp.exe) som tillhandahålls av Windows SDK.
Det enklaste sättet att skapa primära interop-sammansättningar är att använda Tlbimp.exe (typbiblioteksimportör). Tlbimp.exe ger följande skydd:
- Söker efter andra registrerade primära interop-sammansättningar innan nya interop-sammansättningar skapas för eventuella kapslade typbiblioteksreferenser.
- Det går inte att generera den primära interop-sammansättningen om du inte anger containern eller filnamnet för att ge den primära interopsammansättningen ett starkt namn.
- Det går inte att generera en primär interop-sammansättning om du utelämnar referenser till beroende sammansättningar.
- Det går inte att generera en primär interop-sammansättning om du lägger till referenser till beroende sammansättningar som inte är primära interop-sammansättningar.
Skapa primära interop-sammansättningar manuellt i källkoden med hjälp av ett språk som är kompatibelt med Common Language Specification (CLS), till exempel C#. Den här metoden är användbar när ett typbibliotek inte är tillgängligt.
Du måste ha ett kryptografiskt nyckelpar för att signera sammansättningen med ett starkt namn. Mer information finns i Skapa ett nyckelpar.
Generera en primär interop-sammansättning med hjälp av Tlbimp.exe
Skriv i kommandotolken:
tlbimptlbfile/primary /keyfile:filename/out:assemblyname
I det här kommandot är tlbfile filen som innehåller COM-typbiblioteket, filnamnet är namnet på containern eller filen som innehåller nyckelparet och sammansättningsnamnet är namnet på sammansättningen som ska signeras med ett starkt namn.
Primära interop-sammansättningar kan endast referera till andra primära interop-sammansättningar. Om din sammansättning refererar till typer från ett COM-typbibliotek från tredje part måste du hämta en primär interop-sammansättning från utgivaren innan du kan generera din primära interop-sammansättning. Om du är utgivare måste du generera en primär interop-sammansättning för det beroende typbiblioteket innan du genererar den refererande primära interop-sammansättningen.
En beroende primär interop-sammansättning med ett versionsnummer som skiljer sig från det ursprungliga typbiblioteket kan inte identifieras när den installeras i den aktuella katalogen. Du måste antingen registrera den beroende primära interopsammansättningen i Windows-registret eller använda alternativet /reference för att se till att Tlbimp.exe hittar den beroende DLL-filen.
Du kan också omsluta flera versioner av ett typbibliotek. Anvisningar finns i Så här omsluter du flera versioner av typbibliotek.
Exempel
I följande exempel importeras COM-typbiblioteket LibUtil.tlb och sammansättningen LibUtil.dll signeras med ett starkt namn med hjälp av nyckelfilen CompanyA.snk. Genom att utelämna ett specifikt namnområdesnamn genererar det här exemplet standardnamnområdet, LibUtil.
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /out:LibUtil.dll
För ett mer beskrivande namn (med namngivningsriktlinjen VendorName.LibraryName) åsidosätter följande exempel standardsammansättningsfilnamnet och namnområdesnamnet.
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /namespace:CompanyA.LibUtil /out:CompanyA.LibUtil.dll
I följande exempel importeras MyLib.tlb, som refererar till CompanyA.LibUtil.dll, och signerar sammansättningen CompanyB.MyLib.dll med ett starkt namn med hjälp av nyckelfilen CompanyB.snk. Namnområdet, CompanyB.MyLib, åsidosätter standardnamnet för namnområdet.
tlbimp MyLib.tlb /primary /keyfile:CompanyB.snk /namespace:CompanyB.MyLib /reference:CompanyA.LibUtil.dll /out:CompanyB.MyLib.dll