Compartir a través de


Claves del Registro que dependan de la versión

La mayoría de los ensamblados administrados tienen que estar registrados en el Registro de Windows para que puedan ser usados por COM. Los ensamblados que utilizan Interoperabilidad COM sin registro no necesitan cumplir este requisito.

Se puede registrar un ensamblado mediante la herramienta de registro de ensamblados (Regasm.exe) https://msdn.microsoft.com/es-es/library/tzat5yw6(v=vs.110) o los métodos expuestos por la clase RegistrationServices. Cada mecanismo crea claves del Registro que dependen de la versión, que permiten la ejecución en paralelo en un equipo de múltiples versiones del mismo ensamblado.

Este tema describe cómo Regasm.exe agrega y quita entradas del Registro que habilitan COM. Si está escribiendo un programa de instalación personalizada, este tema le ayudará a entender los requisitos de la ejecución en paralelo de la interoperabilidad COM.

Distribución del Registro para Claves del Registro que dependen de la versión

Cuando registre un ensamblado inicialmente, Regasm.exe crea un conjunto de claves de nivel superior para cada clase del ensamblado y agrega bajo la clave HKEY CLASSES\ROOT\CLSID\{}\InprocServer32 una subclave que permite identificar la versión del ensamblado de forma única. La siguiente distribución del Registro muestra la subclave para la versión 1.0.0.0 de className.

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}

A medida que registre posteriores versiones de un ensamblado, Regasm.exe agrega una subclave que depende de la versión para cada una de las nuevas versiones. Todas las versiones del mismo ensamblado comparten las claves superiores (como se muestra en la anterior distribución del Registro). La distribución parcial siguiente muestra las subclaves 1.0.0.0 y 2.0.0.0 del mismo ensamblado.

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"

Eliminación de claves del Registro que dependen de la versión

Regasm.exe quita solamente la subclave que depende de la versión cuando se desinstala una versión del ensamblado. Por ejemplo, si se desinstala la versión1.0.0.0 de className, Regasm.exe quita la subclave 1.0.0.0, pero conserva todas las claves superiores y la subclave 2.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"
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}

Cuando se desinstala la última versión de un ensamblado, Regasm.exe quita todas las subclaves que dependen de la versión. También quita del Registro las claves superiores asociadas con el ensamblado.

Vea también

Conceptos

Inicialización en tiempo de ejecución desde una aplicación COM

Configurar una aplicación COM para ejecución en paralelo

Aplicar atributos que dependen de la versión

Componentes COM y ejecución en paralelo

Otros recursos

Ejecución simultánea para interoperabilidad COM