Registrazione di assembly presso COM
Per la registrazione o l'annullamento della registrazione di un assembly da utilizzare con COM, è possibile eseguire uno strumento della riga di comando, denominato strumento di registrazione degli assembly (Regasm.exe). Regasm.exe aggiunge informazioni relative alla classe .NET al Registro di sistema, in modo che i client COM possano utilizzarla in modo trasparente. La classe RegistrationServices fornisce la funzionalità equivalente.
Prima dell'attivazione da un COM client, è necessario che un componente gestito venga registrato nel Registro di sistema di Windows. Nella tabella riportata di seguito vengono illustrate le chiave in genere aggiunte al Registro di sistema di Windows mediante Regasm.exe. 000000 indica il valore effettivo del GUID.
GUID |
Descrizione |
Chiave del Registro di sistema |
---|---|---|
CLSID |
Identificatore di classe |
HKEY_CLASSES_ROOT\CLSID\{000…000} |
IID |
Identificatore di interfaccia |
HKEY_CLASSES_ROOT\Interface\{000…000} |
LIBID |
Identificatore di libreria |
HKEY_CLASSES_ROOT\TypeLib\{000…000} |
ProgID |
Identificatore a livello di codice |
HKEY_CLASSES_ROOT\000…000 |
Nella chiave HKCR\CLSID\{0000…0000}, il valore predefinito viene impostato sul ProgID della classe e vengono aggiunti due nuovi valori denominati, Class e Assembly. Il runtime legge il valore di Assembly dal Registro di sistema e lo passa al sistema di risoluzione assembly del runtime. Il sistema di risoluzione assembly tenta di trovare l'assembly in base a informazioni quali il nome e il numero di versione dell'assembly stesso. Affinché venga individuato dal sistema di risoluzione assembly, un assembly deve trovarsi in uno dei seguenti percorsi:
Nella Global Assembly Cache. È necessario che costituisca un assembly con nome sicuro.
Nella directory dell'applicazione. Gli assembly caricati dal percorso di un'applicazione saranno accessibili soltanto da quella applicazione.
In un percorso file specificato con l'opzione /codebase in Regasm.exe.
Mediante Regasm.exe viene inoltre creata la chiave InProcServer32 sotto la chiave HKCR\CLSID\{0000…0000}. Il valore predefinito della chiave viene impostato sul nome della DLL con cui viene inizializzato Common Language Runtime (Mscoree.dll).
Analisi delle voci del Registro di sistema
L'interoperabilità COM fornisce un'implementazione di class factory standard per creare un'istanza di ciascuna classe .NET Framework. I client possono chiamare DllGetClassObject sulla DLL gestita per ottenere una class factory e creare oggetti, esattamente come farebbero con qualunque altro componente COM.
In luogo di una classica libreria dei tipi COM, appare un riferimento a Mscoree.dll indicante che Common Language Runtime crea l'oggetto gestito.
Vedere anche
Attività
Procedura: fare riferimento a tipi .NET da COM