Linee guida per la creazione di assembly side-by-side

Le linee guida seguenti illustrano come creare assembly COM o Win32 side-by-side. Potrebbe non essere necessario creare assembly side-by-side personalizzati se la funzionalità necessaria è fornita da uno degli assembly microsoft supportati. In questo caso, usare gli assembly forniti da Microsoft e seguire le procedure per l'uso di assembly side-by-side in Uso di applicazioni isolate e assembly side-by-side.

Prima di tutto, valutare se il componente rende un candidato adatto per un assembly side-by-side. Per altre informazioni, vedere Fornire un componente condiviso come assembly side-by-side?

Per creare un assembly side-by-side, seguire queste linee guida:

  • Decidere quali risorse includere nell'assembly. Tenere presente che un assembly è costituito da uno o più file sempre forniti alle applicazioni e ai clienti insieme. L'assembly funge da unità fondamentale usata per la denominazione, l'associazione, il controllo delle versioni, la distribuzione e la configurazione predefinita. Come regola generale, quando si è incerto se due risorse appartengono allo stesso assembly, è consigliabile che vengano creati per accedere a assembly separati. In genere, un assembly side-by-side è costituito da una singola DLL.
  • Creare un manifesto dell'assembly per l'assembly. Il manifesto deve descrivere l'oggetto COM o le librerie di tipi nell'assembly. Per altre informazioni su ciò che deve essere creato in un manifesto dell'assembly, vedere manifesti dell'assembly.
  • Valutare l'utilizzo degli oggetti quando viene eseguita più di una versione dell'assembly nel sistema. Determinare se diverse versioni dell'assembly richiedono strutture di dati separate, ad esempio file mappati alla memoria, pipe denominate, messaggi e classi di Windows registrati, memoria condivisa, semafori, mutex e driver hardware. Tutte le strutture di dati usate tra le versioni dell'assembly devono essere versioni compatibili con le versioni precedenti. Decidere quali strutture di dati possono essere usate tra versioni e quali strutture di dati devono essere private in una versione. Determinare se le strutture di dati condivise richiedono oggetti di sincronizzazione separati, ad esempio i semafori e i mutex.
  • Creare la DLL per funzionare correttamente e un assembly side-by-side aderendo alle linee guida in Creazione di una DLL per un assembly side-by-side.
  • Creare un set di file di intestazione e funzioni helper per offrire un modo semplice per le chiavi del Registro di sistema delle versioni contenenti lo stato dell'assembly. Gli assembly in genere salvano le impostazioni di stato nelle chiavi del 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 e la DLL per archiviare e gestire correttamente lo stato dell'assembly durante scenari di condivisione side-by-side. Seguire le linee guida in Creazione dello stato di archiviazione per assembly side-by-side.
  • Gli sviluppatori di applicazioni che usano assembly privati devono proteggere la directory dell'applicazione. Se l'applicazione viene installata usando Windows Installer, la directory dell'applicazione può essere protetta usando la tabella LockPermissions. In genere, il sistema viene fornito in lettura, scrittura ed esecuzione dell'accesso agli assembly privati; tutti gli altri processi vengono forniti solo per l'esecuzione e l'accesso in lettura.
  • Testare l'assembly usando scenari con condivisione side-by-side per assicurarsi che sia un assembly side-by-side valido. L'installazione riuscita dell'assembly non è sufficiente per garantire che funzioni come previsto.
  • Adottare un metodo per la numerazione degli aggiornamenti per l'assembly. Ogni assembly è associato a un numero di versione a quattro parti. Da sinistra a destra, le parti principali, minori, build e revisioni sono separate da periodi. Modificare il numero principale o secondario di un assembly per una versione incompatibile con le versioni precedenti. Modificare solo le parti di compilazione e revisione per le modifiche compatibili con le versioni precedenti all'assembly. Ad esempio, uno sviluppatore potrebbe adottare un metodo di numerazione in cui tutti i numeri di versione 1.0.0.* fanno riferimento alle versioni di aggiornamento alla versione 1.0.0.0.