Registrando assemblies com COM
Você pode executar uma ferramenta de linha de comando chamada Assembly Registration Tool (Regasm.exe) para registrar ou cancelar o registro de um assembly para uso com COM. Regasm.exe adiciona informações sobre a classe ao registro do sistema para que os clientes COM possam usar a classe .NET Framework de forma transparente. A RegistrationServices classe fornece a funcionalidade equivalente.
Um componente gerenciado deve ser registrado no registro do Windows antes de poder ser ativado a partir de um cliente COM. A tabela a seguir mostra as chaves que Regasm.exe normalmente adiciona ao registro do Windows. (000000 indica o valor GUID real.)
GUID | Description | Chave do registo |
---|---|---|
CLSID | Identificador de classe | HKEY_CLASSES_ROOT\CLSID\{000... 000} |
IID | Identificador de interface | HKEY_CLASSES_ROOT\Interface\{000... 000} |
LIBID | Identificador da biblioteca | HKEY_CLASSES_ROOT\TypeLib\{000... 000} |
ProgID | Identificador programático | HKEY_CLASSES_ROOT\000... 000 |
Sob o HKCR\CLSID\{0000... 0000} chave, o valor padrão é definido como ProgID da classe, e dois novos valores nomeados, Class e Assembly, são adicionados. O tempo de execução lê o valor Assembly do registro e o passa para o resolvedor de assembly de tempo de execução. O resolvedor de assembly tenta localizar o assembly, com base em informações de assembly, como o nome e o número da versão. Para que o resolvedor de montagem localize uma montagem, a montagem deve estar em um dos seguintes locais:
O cache de assembly global (deve ser um assembly de nome forte).
No diretório do aplicativo. Os assemblies carregados a partir do caminho do aplicativo só são acessíveis a partir desse aplicativo.
Ao longo de um caminho de arquivo especificado com a opção /codebase para Regasm.exe.
Regasm.exe também cria a chave InProcServer32 sob HKCR\CLSID\{0000... 0000} chave. O valor padrão para a chave é definido como o nome da DLL que inicializa o Common Language Runtime (Mscoree.dll).
Examinando entradas do registro
A interoperabilidade COM fornece uma implementação de fábrica de classe padrão para criar uma instância de qualquer classe do .NET Framework. Os clientes podem chamar DllGetClassObject na DLL gerenciada para obter uma fábrica de classes e criar objetos, assim como fariam com qualquer outro componente COM.
Para a InprocServer32
subchave, uma referência a Mscoree.dll aparece no lugar de uma biblioteca de tipos COM tradicional para indicar que o common language runtime cria o objeto gerenciado.