Compartilhar via


Chaves de registro dependente da versão

Mais assemblies gerenciados devem ser registrados no registro do Windows para uso por COM. Assemblies usando a interoperabilidade de COM sem registro estão isentos esse requisito.

Você pode registrar um assembly usando o Ferramenta de registro do Assembly (Regasm. exe) ou métodos expostos pelo RegistrationServices classe. Cada mecanismo cria chaves de registro de dependente da versão que permitem diversas versões do mesmo assembly para execução lado a lado em um computador.

Este tópico descreve como o Regasm. exe adiciona e remove a ativação COM entradas de registro. Se você estiver escrevendo um programa de instalação personalizada, este tópico pode ajudar você Noções básicas sobre os requisitos de registro de interoperabilidade COM a execução lado a lado.

Layout de registro para chaves de dependente da versão

Ao registrar um assembly inicialmente, Regasm. exe cria um conjunto de chaves de nível superior para cada classe no assembly e adiciona uma subchave sob \InprocServer32 de {} HKEY CLASSES\ROOT\CLSID\ chave para identificar exclusivamente a versão do assembly. O layout de registro a seguir mostra a subchave className versão 1.0.0.0.

CLSID\{}
@="namespaceName.className"
CLSID\{}\InprocServer32
@="mscoree.dll"
ThreadingModel = "Both" 
Class="namespaceName.className"
Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
RuntimeVersion="v1.0.3705"
1.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=1.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.0.3705"
CLSID\{}\ProgId
@="namespaceName.className"
CLSID\{}\ImplementedCategories\{guid}

Como registrar as versões subseqüentes do assembly, Regasm. exe adiciona uma subchave dependente da versão para cada nova versão. Todas as versões do mesmo assembly compartilhem as chaves de nível superior (mostradas no layout de registro anterior). O layout parcial a seguir mostra as subchaves 1.0.0.0 e 2.0.0.0 do mesmo assembly.

1.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=1.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.0.3705"
2.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.1.5000"

Remoção da chave dependente da versão

Regasm. exe remove apenas a subchave dependente da versão ao desinstalar uma versão do assembly. Por exemplo, se você desinstalou className versão 1.0.0.0, Regasm. exe remove o 1.0.0.0 subchave mas retém todas as chaves de nível superior e a 2.0.0.0 subchave.

CLSID\{}
   @="namespaceName.className"
CLSID\{}\InprocServer32
   @="mscoree.dll"
ThreadingModel = "Both" 
Class="namespaceName.className"
Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
RuntimeVersion="v1.0.3705"
Version
2.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.1.5500"
CLSID\{}\ProgId
   @="namespaceName.className"
CLSID\{}\ImplementedCategories\{guid}

Quando você desinstala a última versão de um assembly, Regasm. exe remove todas as subchaves de dependente da versão. Ela também remove as chaves de nível superior associadas com o conjunto do registro.

Consulte também

Conceitos

Inicialização de tempo de execução a partir de um aplicativo COM

Configurando um aplicativo COM a execução de lado a lado

Aplicando atributos de dependente da versão

Componentes COM e execução de lado a lado

Outros recursos

Execução lado a lado para interoperabilidade COM