Compartilhar via


Registrando assemblies com o COM

Você pode executar uma ferramenta de linha de comando chamada Ferramenta de registro do Assembly (Regasm.exe) para registrar ou cancelar o registro de um assembly para uso com o COM. Regasm.exe adiciona informações sobre a classe no registro do sistema para que clientes COM possam usar a classe do .NET Framework de forma transparente. A classe RegistrationServices fornece a funcionalidade equivalente.

Um componente gerenciado deve ser registrado no registro do Windows antes que ele possa ser ativado de um cliente COM. A tabela a seguir mostra as chaves que normalmente adicionam o Regasm.exe ao Registro do Windows. (000000 indica o valor real do GUID.)

GUID Descrição Chave do Registro
CLSID Identificador de classe HKEY_CLASSES_ROOT\CLSID\{000…000}
IID Identificador de interface HKEY_CLASSES_ROOT\Interface\{000…000}
LIBID Identificador de biblioteca HKEY_CLASSES_ROOT\TypeLib\{000…000}
ProgID Identificador programático HKEY_CLASSES_ROOT\000…000

Sob a chave HKCR\CLSID\{0000... 0000}, o valor padrão é definido como o ProgID da classe e dois novos valores nomeados, Class e Assembly, são adicionados. O runtime lê o valor de Assembly do registro e a passa para o resolvedor de assembly de runtime. O resolvedor de assembly tenta localizar o assembly, com base em informações de assembly como o número de versão e o nome. Para ser localizado por um resolvedor de assembly, o assembly deve estar em um dos seguintes locais:

  • O cache de assembly global (deve ser um assembly de nome forte).

  • No diretório de aplicativo. Assemblies carregados no caminho do aplicativo só são acessíveis por meio 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 a chave HKCR\CLSID\{0000... 0000}. 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 classes padrão para criar uma instância de qualquer classe do .NET Framework. Os clientes poderão 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 subchave InprocServer32, uma referência a Mscoree.dll é exibida no lugar de uma biblioteca de tipos COM tradicional para indicar que o Common Language Runtime cria o objeto gerenciado.

Confira também