Partager via


Clés de Registre dépendantes de la version

La plupart des assemblys managés doivent être inscrits dans le Registre Windows pour être utilisés par COM. Les assemblys utilisant COM Interop sans inscription n'y sont pas tenus.

Vous pouvez inscrire un assembly en utilisant l'outil Assembly Registration Tool (Regasm.exe) ou des méthodes exposées par la classe RegistrationServices. Chaque mécanisme crée des clés de Registre dépendantes de la version qui permettent à plusieurs versions du même assembly de s'exécuter côte à côte sur un ordinateur.

Cette rubrique explique comment Regasm.exe ajoute et supprime des entrées du Registre qui activent COM. Si vous écrivez un programme d'installation personnalisé, cette rubrique peut vous aider à comprendre les exigences d'inscription de l'exécution côte à côte pour COM Interop.

Disposition du Registre pour des clés dépendantes de la version

Lorsque vous inscrivez un assembly pour la première fois, Regasm.exe crée un ensemble de clés de niveau supérieur pour chaque classe dans l'assembly et ajoute une sous-clé sous la clé HKEY CLASSES\ROOT\CLSID\{}\InprocServer32 pour identifier de manière unique la version de l'assembly. La disposition suivante du Registre montre la sous-clé de className version 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}

À mesure que vous enregistrez les versions suivantes de l'assembly, Regasm.exe ajoute une sous-clé dépendante de la version pour chaque nouvelle version. Toutes les versions du même assembly partagent les clés de niveau supérieur (indiquées dans la disposition précédente du Registre). L'extrait de disposition suivant montre les sous-clés 1.0.0.0 et 2.0.0.0 du même 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"

Suppression d'une clé dépendante de la version

Regasm.exe supprime uniquement la sous-clé dépendante de la version lorsque vous désinstallez une version d'un assembly. Par exemple, si vous avez désinstallé className version 1.0.0.0, Regasm.exe supprime la sous-clé 1.0.0.0 mais conserve toutes les clés de niveau supérieur et la sous-clé 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}

Lorsque vous désinstallez la dernière version d'un assembly, Regasm.exe supprime toutes les sous-clés dépendantes de la version. Il supprime également du Registre les clés de niveau supérieur associées à l'assembly.

Voir aussi

Concepts

Initialisation du runtime à partir d'une application COM

Configuration d'une application COM pour une exécution côte à côte

Application d'attributs dépendants de la version

Composants COM et exécution côte à côte

Autres ressources

Exécution côte à côte pour COM Interop