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 Registro de ensamblados (Regasm.exe) o métodos expuestos por la clase RegistrationServices. Cada mecanismo crea claves del Registro que dependen de la versión, que permiten la ejecución simultánea 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 simultánea 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 elimina 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 elimina 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 elimina todas las subclaves que dependen de la versión. También elimina 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 simultánea
Aplicar atributos que dependen de la versión
Componentes COM y ejecución simultánea