Concetti di applicazioni isolate e assembly side-by-side

Un'applicazione è considerata un' applicazione isolata se tutti i suoi componenti sono assembly side-by-side. Un assembly side-by-side è un insieme di risorse, ad esempio un gruppo di DLL, classi di finestre, server COM, librerie di tipi o interfacce, che un'applicazione può utilizzare in fase di esecuzione. In genere, un assembly side-by-side è costituito da una o più DLL. Ad esempio, l'assembly della libreria di runtime C contiene tre DLL, msvcr80.dll, msvcm80.dll e msvcp80.dll, e viene utilizzato dalle applicazioni compilate tramite funzioni della libreria CRT.

Assembly condiviso o privato

Un assembly side-by-side può essere condiviso o privato. Gli assembly side-by-side condivisi possono essere utilizzati da più applicazioni nei cui manifesti è specificata una dipendenza dall'assembly. Applicazioni diverse, in esecuzione contemporaneamente, possono condividere più versioni di assembly side-by-side. Un assembly privato è un assembly distribuito con un'applicazione e disponibile per l'utilizzo esclusivo da parte di tale applicazione. Gli assembly privati vengono installati nella cartella contenente il file eseguibile dell'applicazione o in una delle relative sottocartelle.

Manifesti e ordine di ricerca

Applicazioni isolate ed assembly side-by-side sono descritti dai manifesti. Un manifesto è un documento XML che può essere dato da un file XML esterno oppure incorporato all'interno di un'applicazione o in un assembly come risorsa. Il file manifesto di un'applicazione isolata viene utilizzato per gestire i nomi e le versioni di assembly side-by-side condivisi a cui l'applicazione deve essere associata in fase di esecuzione. Nel manifesto di un assembly side-by-side vengono specificati i nomi, le versioni, le risorse e gli assembly dipendenti degli assembly side-by-side. Nel caso di un assembly side-by-side condiviso, il relativo manifesto viene installato nella cartella WinSxS\Manifests. Nel caso di un assembly privato, è consigliabile includere il relativo manifesto nella DLL come risorsa con ID uguale a 1 e il nome dell'assembly privato potrebbe essere uguale al nome della DLL. Per ulteriori informazioni, vedere assembly privati.

In fase di esecuzione, Windows utilizza le informazioni sull'assembly ricavate dal manifesto dell'applicazione per cercare e caricare l'assembly side-by-side corrispondente. Se in un'applicazione isolata viene specificata una dipendenza da un assembly, il sistema operativo eseguirà prima la ricerca dell'assembly tra gli assembly condivisi nella cartella WinSxS. Se l'assembly richiesto non viene trovato, il sistema operativo eseguirà la ricerca di un assembly privato installato in una cartella della struttura di directory dell'applicazione. Per ulteriori informazioni, vedere Assembly Searching Sequence.

Modifica delle dipendenze

È possibile modificare le dipendenze dell'assembly side-by-side dopo che un'applicazione è stata distribuita modificando i file di configurazione dell'editore e i file di configurazione dell'applicazione. Un file di configurazione dell'editore, denominato anche file dei criteri dell'editore, è un file XML che reindirizza a livello globale le applicazioni e gli assembly dall'utilizzo di una versione di un assembly side-by-side a un'altra versione dello stesso assembly. Ad esempio, è possibile utilizzare la modifica della dipendenza quando viene distribuita una correzione di bug o una correzione per la sicurezza per un determinato assembly side-by-side e un editore dell'assembly desidera reindirizzare tutte le applicazioni per utilizzare la nuova versione dell'assembly. Un file di configurazione dell'applicazione è un file XML che reindirizza un'applicazione dall'utilizzo di una versione di un assembly side-by-side a un'altra versione dello stesso assembly. Può essere utilizzato per reindirizzare un'applicazione all'utilizzo di una versione di un assembly side-by-side diversa da quella definita nel file di configurazione dell'editore globale. Per ulteriori informazioni, vedere Configurazione.

Librerie di Visual C++

Le librerie come ATL, MFC, CRT, C++ standard, OpenMP e MSDIA vengono distribuite come assembly side-by-side condivisi nella Native Assembly Cache. Per impostazione predefinita, tutte le applicazioni compilate con Visual C++ vengono compilate con il manifesto incorporato nel file binario finale, nel quale vengono descritte le dipendenze di questo file binario dalle librerie di Visual C++. Per informazioni dettagliate sulla generazione del manifesto per applicazioni Visual C++, vedere Informazioni sulla generazione di manifesti per programmi C/C++

Vedere anche

Altre risorse

Compilazione di applicazioni isolate C/C++ e di assembly side-by-side