Registrera .NET Framework-sammansättningar med COM

Note

Den här artikeln beskriver .NET Framework COM-interopvägledning som använder det äldre verktyget för sammansättningsregistrering (Regasm.exe), den globala sammansättningscache och registerbaserad COM-registrering. För moderna .NET använder du COM-källgenereringen eller API:etComWrappers. Mer information finns i COM-interop.

Du kan köra ett kommandoradsverktyg med namnet Assembly Registration Tool (Regasm.exe) för att registrera eller avregistrera en .NET Framework-sammansättning för användning med COM. Regasm.exe lägger till information om klassen i systemregistret så att COM-klienter kan använda .NET Framework-klassen transparent. Klassen RegistrationServices tillhandahåller motsvarande funktioner.

För .NET Framework måste en hanterad komponent registreras i Windows-registret innan den kan aktiveras från en COM-klient. I följande tabell visas de nycklar som Regasm.exe vanligtvis lägger till i Windows-registret. (000000 anger det faktiska GUID-värdet.)

GUID Beskrivning Registernyckel
CLSID Klassidentifierare HKEY_CLASSES_ROOT\CLSID\{000…000}
IID Gränssnittsidentifierare HKEY_CLASSES_ROOT\Interface\{000…000}
LIBID Biblioteksidentifierare HKEY_CLASSES_ROOT\TypeLib\{000…000}
ProgID Programmatisk identifierare HKEY_CLASSES_ROOT\000…000

Under the HKCR\CLSID\{0000… 0000}-nyckel, standardvärdet är inställt på klassens ProgID och två nya namngivna värden, klass och sammansättning, läggs till. Körningstiden läser Assembly-värdet från registret och skickar det vidare till körningstids assembly-upplösare. Sammansättningsmatcharen försöker hitta sammansättningen baserat på sammansättningsinformation som namn och versionsnummer. För att sammansättningslösaren ska kunna hitta en sammansättning måste sammansättningen finnas på någon av följande platser:

  • Den globala sammansättningscachen (måste vara en starkt namngiven sammansättning).

  • I programkatalogen. Sammansättningar som läses in från programsökvägen är endast tillgängliga från programmet.

  • På en filsökväg som anges med alternativet /codebase till Regasm.exe.

Regasm.exe skapar även InProcServer32-nyckeln under HKCR\CLSID\{0000... 0000} nyckel. Standardvärdet för nyckeln är inställt på namnet på den DLL som initierar common language runtime (Mscoree.dll).

Granska poster i registret

COM-interop i .NET Framework tillhandahåller en fabriksimplementering av standardklass för att skapa en instans av valfri .NET Framework-klass. Klienter kan anropa DllGetClassObject den hanterade DLL:en för att hämta en klassfabrik och skapa objekt, precis som med andra COM-komponenter.

För undernyckeln InprocServer32 visas en referens till Mscoree.dll i stället för ett traditionellt COM-typbibliotek som anger att den vanliga språkkörningen skapar det hanterade objektet.

Se även