Importera ett typbibliotek som en sammansättning
COM-typdefinitioner finns vanligtvis i ett typbibliotek. Däremot skapar CLS-kompatibla kompilatorer typmetadata i en sammansättning. De två källorna av typen information är helt olika. Det här avsnittet beskriver tekniker för att generera metadata från ett typbibliotek. Den resulterande sammansättningen kallas för en interop-sammansättning och den typinformation som den innehåller gör att .NET Framework-program kan använda COM-typer.
Det finns två sätt att göra den här typen av information tillgänglig för ditt program:
Använda interop-sammansättningar med endast designtid: Från och med .NET Framework 4 kan du instruera kompilatorn att bädda in typinformation från interop-sammansättningen i din körbara fil. Kompilatorn bäddar bara in den typinformation som programmet använder. Du behöver inte distribuera interop-sammansättningen med ditt program. Detta är den rekommenderade tekniken.
Distribuera interop-sammansättningar: Du kan skapa en standardreferens till interop-sammansättningen. I det här fallet måste interop-sammansättningen distribueras med ditt program. Om du använder den här tekniken och inte använder en privat COM-komponent ska du alltid referera till den primära interopsammansättningen (PIA) som publicerats av författaren till COM-komponenten som du tänker införliva i din hanterade kod. Mer information om hur du skapar och använder primära interop-sammansättningar finns i Primära Interop-sammansättningar.
När du använder interop-sammansättningar med endast designtid kan du bädda in typinformation från den primära interop-sammansättningen som publicerats av författaren till COM-komponenten. Du behöver dock inte distribuera den primära interop-sammansättningen med ditt program.
Om du använder interop-sammansättningar med endast designtid minskar storleken på ditt program, eftersom de flesta program inte använder alla funktioner i en COM-komponent. Kompilatorn är mycket effektiv när den bäddar in typinformation. Om ditt program bara använder några av metoderna i ett COM-gränssnitt bäddar kompilatorn inte in de oanvända metoderna. När ett program med inbäddad typinformation interagerar med ett annat sådant program, eller interagerar med ett program som använder en primär interop-sammansättning, använder common language runtime typjämförelseregler för att avgöra om två typer med samma namn representerar samma COM-typ. Du behöver inte känna till dessa regler för att använda COM-objekt. Men om du är intresserad av reglerna kan du läsa Typ av ekvivalens och Inbäddade interoptyper.
Generera metadata
COM-typbibliotek kan vara fristående filer som har ett .tlb-tillägg, till exempel Loanlib.tlb. Vissa typbibliotek är inbäddade i resursavsnittet i en .dll- eller .exe-fil. Andra källor av typen biblioteksinformation är .olb- och .ocx-filer.
När du har hittat typbiblioteket som innehåller implementeringen av din COM-måltyp har du följande alternativ för att generera en interop-sammansättning som innehåller typmetadata:
Visual Studio
Visual Studio konverterar automatiskt COM-typer i ett typbibliotek till metadata i en sammansättning. Anvisningar finns i Så här lägger du till referenser till typbibliotek.
Typbiblioteksimportör (Tlbimp.exe)
Importören för typbiblioteket innehåller kommandoradsalternativ för att justera metadata i den resulterande interop-filen, importerar typer från ett befintligt typbibliotek och genererar en interop-sammansättning och ett namnområde. Instruktioner finns i Så här: Generera Interop-sammansättningar från typbibliotek.
System.Runtime.InteropServices.TypeLibConverter Klass
Den här klassen innehåller metoder för att konvertera samklasser och gränssnitt i ett typbibliotek till metadata i en sammansättning. Den genererar samma metadatautdata som Tlbimp.exe. Men till skillnad från Tlbimp.exe TypeLibConverter kan klassen konvertera ett bibliotek av minnesintern typ till metadata.
Anpassade omslutningar
När ett typbibliotek inte är tillgängligt eller felaktigt är ett alternativ att skapa en duplicerad definition av klassen eller gränssnittet i hanterad källkod. Sedan kompilerar du källkoden med en kompilator som riktar sig mot körningen för att skapa metadata i en sammansättning.
Om du vill definiera COM-typer manuellt måste du ha åtkomst till följande objekt:
Exakta beskrivningar av de samklasser och gränssnitt som definieras.
En kompilator, till exempel C#-kompilatorn, som kan generera lämpliga klassdefinitioner för .NET Framework.
Kunskap om typ av konverteringsregler för bibliotek till sammansättning.
Att skriva en anpassad omslutning är en avancerad teknik. Mer information om hur du genererar en anpassad omslutning finns i Anpassa standardomslutningar.
Mer information om COM-interopimportprocessen finns i Type Library to Assembly Conversion Summary (Typbibliotek till sammansättningskonverteringssammanfattning).
Se även
- TypeLibConverter
- Exponera COM-komponenter för .NET Framework
- Skriv bibliotek till sammanfattning av sammansättningskonvertering
- Tlbimp.exe (typbiblioteksimportör)
- Anpassa standardomslutningar
- Använda COM-typer i hanterad kod
- Kompilera ett Interop-projekt
- Distribuera ett Interop-program
- Anvisningar: Lägga till referenser till typbibliotek
- Anvisningar: Generera Interop-sammansättningar från typbibliotek