Chiavi del Registro di sistema dipendenti dalla versione

Per l'utilizzo con COM, la maggior parte degli assembly gestiti deve essere registrata nel Registro di sistema di Windows. Gli assembly con cui viene utilizzata l'interoperabilità COM senza registrazione non devono soddisfare questo requisito.

È possibile registrare un assembly mediante lo strumento di registrazione degli assembly (Regasm.exe) o i metodi esposti dalla classe RegistrationServices. Con ciascun meccanismo vengono create chiavi del Registro di sistema dipendenti dalla versione che consentono l'esecuzione affiancata di più versioni dello stesso assembly su un computer.

Nel presente argomento vengono descritte l'aggiunta e la rimozione di voci del Registro di sistema per l'attivazione COM mediante Regasm.exe. Se si scrive un programma di installazione personalizzato, questo argomento consente di apprendere i requisiti di registrazione dell'esecuzione affiancata per l'interoperabilità COM.

Layout del Registro di sistema per le chiavi dipendenti dalla versione

In occasione della registrazione iniziale di un assembly, mediante Regasm.exe viene creato un insieme di chiavi di primo livello per ciascuna classe dell'assembly e viene aggiunta una sottochiave nella chiave HKEY CLASSES\ROOT\CLSID\{}\InprocServer32 per identificare in modo univoco la versione dell'assembly. Nel layout del Registro di sistema fornito di seguito viene riportata la sottochiave per la versione 1.0.0.0 di 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}

In caso di registrazione di versioni successive dell'assembly, mediante Regasm.exe viene aggiunta una sottochiave dipendente dalla versione per ciascuna nuova versione. Tutte le versioni dello stesso assembly condividono le stesse chiavi di primo livello, illustrate nel precedente layout del Registro di sistema. Nel layout parziale fornito di seguito vengono riportate le sottochiavi 1.0.0.0 e 2.0.0.0 dello stesso 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"

Rimozione delle chiavi dipendenti dalla versione

Quando si disinstalla una versione dell'assembly, mediante Regasm.exe viene rimossa solo la sottochiave dipendente dalla versione. Se ad esempio è stata disinstallata la versione 1.0.0.0 di className, con Regasm.exe verrà rimossa la sottochiave 1.0.0.0, ma verranno mantenute tutte le chiavi di primo livello e la sottochiave 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}

Quando si disinstalla la versione più recente di un assembly, con Regasm.exe vengono rimosse tutte le sottochiavi dipendenti dalla versione. Dal Registro di sistema vengono inoltre rimosse le chiavi di primo livello associate all'assembly.

Vedere anche

Concetti

Inizializzazione del runtime da un'applicazione COM
Configurazione di un'applicazione COM per l'esecuzione affiancata
Applicazione di attributi dipendenti dalla versione
Componenti COM ed esecuzione affiancata

Altre risorse

Esecuzione side-by-side per l'interoperabilità COM