.NET Framework-assembly's registreren bij COM

Opmerking

In dit artikel wordt .NET Framework COM-interoperabiliteitsrichtlijnen beschreven die gebruikmaken van het verouderde assemblyregistratieprogramma (Regasm.exe), de algemene assemblycache en com-registratie op basis van een register. Voor moderne .NET gebruikt u COM-brongeneratie of de ComWrappers API. Zie COM-interop voor meer informatie.

U kunt een opdrachtregelprogramma uitvoeren met de naam Assembly Registration Tool (Regasm.exe) om een .NET Framework-assembly te registreren of de registratie ervan ongedaan te maken voor gebruik met COM. Regasm.exe informatie over de klasse toevoegt aan het systeemregister, zodat COM-clients de .NET Framework-klasse transparant kunnen gebruiken. De RegistrationServices klasse biedt de equivalente functionaliteit.

Voor .NET Framework moet een beheerd onderdeel worden geregistreerd in het Windows-register voordat het kan worden geactiveerd vanaf een COM-client. In de volgende tabel ziet u de sleutels die Regasm.exe doorgaans aan het Windows-register toevoegt. (000000 geeft de werkelijke GUID-waarde aan.)

GUID Beschrijving Registersleutel
CLSID Klasse-id HKEY_CLASSES_ROOT\CLSID\{000…000}
IID Interface-identificatie HKEY_CLASSES_ROOT\Interface\{000…000}
LIBID Bibliotheek-id HKEY_CLASSES_ROOT\TypeLib\{000…000}
ProgID Programmatische id HKEY_CLASSES_ROOT\000…000

Onder de HKCR\CLSID\{0000... 0000}-sleutel, de standaardwaarde is ingesteld op de ProgID van de klasse en er worden twee nieuwe benoemde waarden, Klasse en Assembly, toegevoegd. De runtime leest de assembly-waarde uit het register en geeft deze door aan de runtime assembly-resolver. De assembly-resolver probeert de assembly te vinden op basis van assemblygegevens zoals de naam en het versienummer. De assembly-resolver moet zich op een van de volgende locaties bevinden om een assembly te vinden:

  • De globale assemblycache (moet een sterk benoemde assembly zijn).

  • In de toepassingsmap. Assembly's die vanuit het toepassingspad worden geladen, zijn alleen toegankelijk vanuit die toepassing.

  • Langs een bestandspad opgegeven met de /codebase optie naar Regasm.exe.

Regasm.exe maakt ook de sleutel InProcServer32 onder de HKCR\CLSID\{0000…0000} sleutel aan. De standaardwaarde voor de sleutel is ingesteld op de naam van het DLL-bestand waarmee de algemene taalruntime (Mscoree.dll) wordt geïnitialiseerd.

Registervermeldingen onderzoeken

COM-interoperabiliteit in .NET Framework biedt een standaardimplementatie van een klassenfactory om een exemplaar van een willekeurige .NET Framework-klasse te maken. Clients kunnen het beheerde DLL-bestand aanroepen DllGetClassObject om een klassefactory op te halen en objecten te maken, net zoals bij elk ander COM-onderdeel.

Voor de InprocServer32 subsleutel wordt een verwijzing naar Mscoree.dll weergegeven in plaats van een traditionele COM-typebibliotheek om aan te geven dat de algemene taalruntime het beheerde object maakt.

Zie ook