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.
Klasser kan endast marshaleras genom COM-samverkan och marshaleras alltid som gränssnitt. I vissa fall kallas det gränssnitt som används för att marshalera klassen för klassgränssnittet. Information om hur du åsidosättar klassgränssnittet med ett valfritt gränssnitt finns i COM Callable Wrapper.
Även om alla utvecklare som vill använda COM-typer från ett .NET Framework-program kan generera en interop-sammansättning, skapar detta ett problem. Varje gång en utvecklare importerar och signerar ett COM-typbibliotek skapar utvecklaren en uppsättning unika typer som inte är kompatibla med dem som importeras och signeras av en annan utvecklare. Lösningen på den här typen av inkompatibilitetsproblem är att varje utvecklare hämtar den leverantörslevererade och signerade primära interop-sammansättningen.
Om du planerar att exponera COM-typer från tredje part för andra applikationer ska du alltid använda den primära interoperabilitetssammansättningen som tillhandahålls av samma utgivare som typbiblioteket som den definierar. Förutom att tillhandahålla garanterad typkompatibilitet anpassas ofta primära interop-sammansättningar av leverantören för att förbättra samverkan.
Även om du inte planerar att exponera COM-typer från tredje part kan det underlätta uppgiften att samverka med COM-komponenter med hjälp av den primära interop-sammansättningen. Den här strategin ger dock ingen isolering från ändringar som en leverantör kan göra för typer som definierats i en primär interop-sammansättning. När programmet kräver sådan isolering genererar du en egen interop-sammansättning i stället för att använda den primära interop-sammansättningen.
Du måste registrera alla hämtade primära interop-sammansättningar på utvecklingsdatorn innan du kan referera till dem med Visual Studio. Visual Studio söker efter och använder en primär interop-sammansättning första gången du refererar till en typ från ett COM-typbibliotek. Om Visual Studio inte kan hitta den primära interop-sammansättningen som är associerad med typbiblioteket uppmanas du att hämta den eller erbjuder dig att skapa en interop-sammansättning i stället. På samma sätt använder typbiblioteksimportören (Tlbimp.exe) även registret för att hitta primära interop-sammansättningar.
Även om det inte är nödvändigt att registrera primära interop-sammansättningar såvida du inte planerar att använda Visual Studio, ger registreringen två fördelar:
- En registrerad primär interoperabilitetssammansättning är tydligt markerad under registernyckeln för det ursprungliga typbiblioteket. Registrering är det bästa sättet att hitta en primär interoperabilitetssammansättning på din dator.
- Du kan undvika att oavsiktligt generera och använda en ny interop-sammansättning om du någon gång i framtiden använder Visual Studio för att referera till en typ som du har en oregistrerad primär interop-sammansättning för.
Använd verktyget för sammansättningsregistrering (Regasm.exe) för att registrera en primär interop-sammansättning.
Registrera en primär interop-sammansättning
Om du vill registrera en primär interop-sammansättning skriver du i kommandotolken:
regasm <assemblyname>
I det här kommandot är assemblyname filnamnet för den sammansättning som är registrerad. Regasm.exe lägger till en post för den primära interop-sammansättningen under samma registernyckel som det ursprungliga typbiblioteket.
Exempel
I följande exempel registreras den CompanyA.UtilLib.dll primära interop-sammansättningen.
regasm CompanyA.UtilLib.dll