Corrigir um aplicativo existente usando um assembly privado
A partir do Windows XP, você pode criar um assembly privado e disponibilizá-lo para um aplicativo específico. Essa funcionalidade pode ser usada para corrigir um aplicativo que se torna incompatível com uma atualização. Um exemplo seria um aplicativo que se torna incompatível com a versão mais recente do MSVCRT.DLL depois de atualizar o sistema operacional. Nesse caso, você não tem a opção de substituir a versão do sistema porque MSVCRT.DLL é um arquivo protegido pelo Windows. Em vez de precisar reescrever o aplicativo para trabalhar com a nova versão do MSVCRT, você pode criar um assembly privado para MSVCRT e instalá-lo na pasta do aplicativo. Observe que nem todos os componentes compartilhados são candidatos adequados para um assembly privado lado a lado e alguns componentes têm restrições de licenciamento sobre onde seus componentes podem ser instalados. O componente precisa atender aos critérios de um componente lado a lado. Pergunte ao editor do componente se ele pode fornecer um assembly adequado.
O manifesto do assembly privado e o manifesto do aplicativo devem ser instalados na mesma pasta que o executável do aplicativo. Quando o aplicativo é executado, ele consulta o manifesto do aplicativo e carrega a versão do MSVCRT que é privada para o aplicativo.
Para este exemplo, o assembly privado incluiria MSVCRT.DLL e MSVCIRT.DLL como no seguinte manifesto do assembly:
<?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>
Veja a seguir um exemplo de um possível manifesto do aplicativo.
<?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>