Partilhar via


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 Descrição Chave de 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

Na 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 Assembly do registo e passa-o para o resolvedor de assemblies em tempo de execução. O resolvedor de assemblies tenta localizar o assembly específico, com base em informações do 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 da aplicação só são acessíveis a partir dessa aplicação.

  • Ao longo de um caminho de arquivo especificado com a opção /codebase para Regasm.exe.

Regasm.exe também cria a chave InProcServer32 no âmbito da 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 padrão de fábrica de classes para criar uma instância de qualquer classe do .NET Framework. Os clientes podem recorrer DllGetClassObject à DLL gerida para obter uma fábrica de classes e criar objetos, tal como fariam com qualquer outro componente COM.

Para a subchave InprocServer32, uma referência a Mscoree.dll aparece no lugar de uma biblioteca de tipos COM tradicional para indicar que o tempo de execução da linguagem comum cria o objeto gerido.

Ver também