Archiviazione dello stato di creazione per assembly side-by-side

Quando si creano assembly side-by-side personalizzati, seguire le linee guida per la creazione di assembly side-by-side e creare qualsiasi DLL da includere nell'assembly in base alle linee guida riportate in Creazione di una DLL per un assembly side-by-side.

Rispettare le linee guida seguenti per l'archiviazione dello stato:

  • Archiviazione dello stato di progettazione per essere compatibile con le versioni precedenti e successive. Si prevede che le versioni vengano usate in qualsiasi ordine: ad esempio v1, quindi v3, quindi v2.

  • Inizializzare e impostare le impostazioni predefinite per l'assembly nel codice assembly. Non salvare le impostazioni predefinite nel Registro di sistema.

  • Le impostazioni del Registro di sistema devono essere scritte in base a una singola versione per isolare più versioni di assembly che possono essere eseguite contemporaneamente. Progettare l'assembly side-by-side per archiviare e gestire correttamente lo stato dell'assembly durante gli scenari di condivisione side-by-side.

  • Gli assembly archiviano in genere le informazioni sullo stato nelle chiavi del Registro di sistema. Creare un set di file di intestazione e funzioni helper per fornire un modo semplice per modificare le chiavi del Registro di sistema contenenti lo stato dell'assembly.

  • Le informazioni sullo stato dell'assembly salvate nel Registro di sistema devono essere isolate da altre versioni dell'assembly. Le impostazioni di stato archiviate nel Registro di sistema devono essere salvate in singole sezioni della versione del Registro di sistema. Questa operazione è necessaria sia nelle parti HKLM che HKCU del Registro di sistema. Ad esempio, archiviare le impostazioni dello stato HKCU per la versione dell'assembly XXXX nella seguente chiave del Registro di sistema:

    HKCU\Mycompany\MyComponent\VersionXXXX

  • Tutte le informazioni sullo stato archiviate nel Registro di sistema da assembly condivisi devono essere salvate in singole sezioni della versione del Registro di sistema. Ad esempio, un'impostazione di stato denominata EnableSuperCoolFeature potrebbe avere un valore TRUE o FALSE. Archiviare il valore per un assembly side-by-side condiviso come segue:

    \ HKEY_CurrentUser Software\Mycompany\MyComponent\Versione 01.01\EnableSuperCoolFeature = TRUE

  • Tutte le informazioni sullo stato archiviate nel Registro di sistema da assembly privati devono essere salvate in singole sezioni dell'applicazione del Registro di sistema. In questo modo le impostazioni dello stato dell'assembly vengono isolate dall'applicazione. È possibile usare la funzione GetModuleFileName per configurare una radice virtuale. Ad esempio, se la versione dell'assembly XXYY è un assembly privato di "SomeApplication", una chiamata a GetModuleFileName restituisce "SomeApplication" ed eventuali impostazioni di stato privato per l'assembly devono essere scritte nella chiave seguente:

    HKCU\Mycompany\MyComponent\VersionXXYY\SomeApplication

  • Rendere le impostazioni di stato condivise archiviate nel registro privato nel contesto dell'assembly in esecuzione. È possibile usare la funzione GetModuleFileName per configurare una radice virtuale. Questa operazione deve essere eseguita per i rami HKLM e HKCU.

  • Idealmente, è consigliabile adottare un modello di persistenza in cui l'applicazione mantiene lo stato e non modifica il Registro di sistema. Un'applicazione non deve toccare direttamente le voci del Registro di sistema del componente. L'assembly deve invece offrire funzioni API che salvano o ripristinano le impostazioni compatibili side-by-side.

  • Gli assembly possono salvare le impostazioni di stato negli archivi all'esterno del Registro di sistema per consentire all'assembly di interagire con lo stato globale. Gli assembly side-by-side possono usare gli archivi compatibili side-by-side seguenti:

    • Archivio protetto (pstore)
    • Una cache WinInet
    • Un SQL Server Microsoft