Linee guida per la creazione di componenti per l'esecuzione affiancata di più versioniGuidelines for Creating Components for Side-by-Side Execution

Per creare applicazioni o componenti gestiti progettati per l'esecuzione affiancata, seguire le indicazioni generali riportate di seguito.Follow these general guidelines to create managed applications or components designed for side-by-side execution:

  • Associare l'identità del tipo a una determinata versione di un file.Bind type identity to a particular version of a file.

    In Common Language Runtime, l'identità del tipo viene associata a una determinata versione di file con assembly con nome sicuro.The common language runtime binds type identity to a particular file version by using strong-named assemblies. Per creare un'applicazione o un componente per l'esecuzione affiancata, è necessario assegnare a tutti gli assembly un nome sicuro.To create an application or component for side-by-side execution, you must give all assemblies a strong name. In questo modo, viene creata una precisa identità del tipo e viene garantito che qualsiasi risoluzione del tipo verrà reindirizzata al file corretto.This creates precise type identity and ensures that any type resolution is directed to the correct file. Un assembly con nome sicuro contiene informazioni sulla versione, sulle impostazioni cultura e sull'editore che vengono usate dal runtime per trovare il file corretto in risposta a una richiesta di binding.A strong-named assembly contains version, culture, and publisher information that the runtime uses to locate the correct file to fulfill a binding request.

  • Usare l'archiviazione con supporto della versione.Use version-aware storage.

    Per fornire l'archiviazione con supporto della versione, nel runtime viene usata la Global Assembly Cache,The runtime uses the global assembly cache to provide version-aware storage. che rappresenta una struttura di directory con supporto della versione che viene installata su qualsiasi computer in cui viene usato .NET Framework.The global assembly cache is a version-aware directory structure installed on every computer that uses the .NET Framework. Gli assembly installati nella Global Assembly Cache non vengono sovrascritti in caso di installazione di una nuova versione dell'assembly.Assemblies installed in the global assembly cache are not overwritten when a new version of that assembly is installed.

  • Creare un'applicazione o un componente che viene eseguito in modalità isolata.Create an application or component that runs in isolation.

    Un'applicazione o un componente eseguito in modalità isolata deve riuscire a gestire le risorse in modo da evitare conflitti quando due istanze dell'applicazione o del componente vengono eseguite contemporaneamente.An application or component that runs in isolation must manage resources to avoid conflicts when two instances of the application or component are running simultaneously. L'applicazione o il componente deve usare anche una struttura di file specifica della versione.The application or component must also use a version-specific file structure.

Isolamento di applicazioni e componentiApplication and Component Isolation

L'isolamento costituisce un fattore determinante per la corretta progettazione di un'applicazione o di un componente per l'esecuzione affiancata.One key to successfully designing an application or component for side-by-side execution is isolation. L'applicazione o il componente deve riuscire a gestire tutte le risorse, in particolare l'I/O di file, in modo isolato.The application or component must manage all resources, particularly file I/O, in an isolated manner. Per assicurarsi che l'applicazione o il componente venga eseguito in modalità isolata, seguire le indicazioni riportate di seguito.Follow these guidelines to make sure your application or component runs in isolation:

  • Scrivere i valori nel Registro di sistema in base alla versione.Write to the registry in a version-specific way. Archiviare i valori in hive o chiavi in cui viene indicata la versione e non condividere le informazioni o lo stato tra più versioni di un componente.Store values in hives or keys that indicate the version, and do not share information or state across versions of a component. Viene così impedita la sovrascrittura di informazioni da parte di due applicazioni eseguite contemporaneamente.This prevents two applications or components running at the same time from overwriting information.

  • Impostare gli oggetti denominati del kernel in base alla versione, affinché non si verifichi una race condition.Make named kernel objects version-specific so that a race condition does not occur. Una race condition si verifica ad esempio quando due semafori di due versioni della stessa applicazione si trovano in stato di reciproca attesa.For example, a race condition occurs when two semaphores from two versions of the same application wait on each other.

  • Usare nomi di file e directory che tengono conto delle informazioni sulla versione.Make file and directory names version-aware. Le strutture di file devono essere basate sulle informazioni relative alla versione.This means that file structures should rely on version information.

  • Creare account utente e gruppi in base alla versione.Create user accounts and groups in a version-specific manner. Gli account utente e i gruppi creati da un'applicazione devono essere identificati in base alla versione.User accounts and groups created by an application should be identified by version. Non condividere account utente e gruppi tra versioni diverse di un'applicazione.Do not share user accounts and groups between versions of an application.

Installazione o disinstallazione delle versioniInstalling and Uninstalling Versions

In occasione della progettazione di un'applicazione per l'esecuzione affiancata, seguire le indicazioni relative all'installazione e alla disinstallazione delle versioni:When designing an application for side-by-side execution, follow these guidelines concerning installing and uninstalling versions:

  • Non eliminare dal Registro di sistema informazioni che potrebbero essere necessarie per altre applicazioni eseguite con una diversa versione di .NET Framework.Do not delete information from the registry that may be needed by other applications running under a different version of the .NET Framework.

  • Non sostituire informazioni del Registro di sistema che potrebbero essere necessarie per altre applicazioni eseguite con una diversa versione di .NET Framework.Do not replace information in the registry that may be needed by other applications running under a different version of the .NET Framework.

  • Non annullare la registrazione di componenti COM che potrebbero essere necessari per altre applicazioni eseguite con una diversa versione di .NET Framework.Do not unregister COM components that may be needed by other applications running under a different version of the .NET Framework.

  • Non modificare InprocServer32 o altre voci del Registro di sistema per un server COM già registrato.Do not change InprocServer32 or other registry entries for a COM server that was already registered.

  • Non eliminare account utente o gruppi che potrebbero essere necessari per altre applicazioni eseguite con una diversa versione di .NET Framework.Do not delete user accounts or groups that may be needed by other applications running under a different version of the .NET Framework.

  • Non aggiungere nel Registro di sistema informazioni contenenti un percorso che non tenga conto della versione.Do not add anything to the registry that contains an unversioned path.

Numero di versione di file e assemblyFile Version Number and Assembly Version Number

La versione dei file costituisce una risorsa di versione Win32 non usata dal runtime.File version is a Win32 version resource that is not used by the runtime. In generale, la versione dei file viene aggiornata anche per un aggiornamento sul posto.In general, you update the file version even for an in-place update. Due file identici possono disporre di informazioni sulla versione del file diverse e due file diversi possono disporre delle stesse informazioni sulla versione del file.Two identical files can have different file version information, and two different files can have the same file version information.

La versione degli assembly viene usata dal runtime per il binding di assembly.The assembly version is used by the runtime for assembly binding. Due assembly identici con numeri di versione diversi vengono gestiti dal runtime come due assembly diversi.Two identical assemblies with different version numbers are treated as two different assemblies by the runtime.

Lo strumento Global Assembly Cache (Gacutil.exe) consente di sostituire un assembly solo quando il numero di versione del file è più recente.The Global Assembly Cache tool (Gacutil.exe) allows you to replace an assembly when only the file version number is newer. Windows Installer in genere non esegue l'installazione su un assembly a meno che il numero di versione dell'assembly non sia superiore.The installer generally does not install over an assembly unless the assembly version number is greater.

Vedere ancheSee also