Correzione di un'applicazione esistente tramite un assembly privato
A partire da Windows XP, è possibile creare un assembly privato e renderlo disponibile per un'applicazione specifica. Questa funzionalità può essere usata per correggere un'applicazione incompatibile con un aggiornamento. Un esempio è un'applicazione che diventa incompatibile con la versione più recente di MSVCRT.DLL dopo l'aggiornamento del sistema operativo. In questo caso, non è possibile sostituire la versione di sistema perché MSVCRT.DLL è un file protetto da Windows. Invece di dover riscrivere l'applicazione per usare la nuova versione di MSVCRT, è possibile creare un assembly privato per MSVCRT e installarlo nella cartella dell'applicazione. Si noti che non tutti i componenti condivisi sono un candidato adatto per un assembly side-by-side privato e alcuni componenti hanno restrizioni di licenza sulla posizione in cui è possibile installare i componenti. Il componente deve soddisfare i criteri per un componente affiancato. Chiedere all'editore del componente se può fornire un assembly appropriato.
Il manifesto dell'assembly privato e il manifesto dell'applicazione devono essere entrambi installati nella stessa cartella del file eseguibile dell'applicazione. Quando l'applicazione viene eseguita, consulta il manifesto dell'applicazione e carica la versione di MSVCRT privata per l'applicazione.
Per questo esempio, l'assembly privato includerà sia MSVCRT.DLL che MSVCIRT.DLL come nel manifesto dell'assembly seguente:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32"
name="Microsoft.Windows.PrivateCPlusPlusRuntime"
version="6.0.0.0"
processorArchitecture="x86"/>
<file name="msvcrt.dll"/>
<file name="msvcirt.dll"/>
</assembly>
Di seguito è riportato un esempio di un possibile manifesto dell'applicazione.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="x86"
name="APPLICATION"
type="win32"
/>
<description>Description of Application</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.PrivateCPlusPlusRuntime"
version="6.0.0.0"
processorArchitecture="x86"/>
</dependentAssembly>
</dependency>
</assembly>