Usando assemblies lado a lado

Use o procedimento a seguir para desenvolver um novo aplicativo ou atualizar um aplicativo existente para usar os assemblies lado a lado disponíveis da Microsoft ou de outros editores de assembly lado a lado. Para obter uma lista dos assemblies lado a lado atualmente fornecidos pela Microsoft, consulte Assemblies lado a lado da Microsoft com suporte. Observe que o aplicativo deve ser executado em pelo menos o Windows XP para instalar os assemblies como assemblies lado a lado. Para obter mais informações, consulte Diretrizes para criar assemblies lado a lado.

Para adicionar um assembly lado a lado a um aplicativo

  1. Identifique os assemblies lado a lado exigidos pelo aplicativo. A partir do Windows XP, esses assemblies lado a lado e seus manifestos de assembly são instalados com o sistema operacional, mas não estão registrados globalmente.

  2. Use um editor XML para criar um manifesto do aplicativo. Veja o exemplo de manifesto do aplicativo abaixo. Para obter mais informações, consulte Manifestos de aplicativo na Referência de Arquivos de Manifesto.

  3. Insira valores de atributo no subelemento assemblyIdentity de contexto DEF do manifesto do aplicativo que define exclusivamente o aplicativo. Para obter mais informações sobre o assemblyIdentity de contexto de DEF, consulte Manifestos do aplicativo.

  4. Se o assembly contiver assemblies dependentes, insira valores de atributo nos subelementos assemblyIdentity de contexto REF correspondentes do manifesto do aplicativo. Para obter mais informações sobre o assemblyIdentity de contexto REF, consulte Manifestos do aplicativo.

    <dependentAssembly>
      <assemblyIdentity type="win32"
                        name="Microsoft.Windows.SampleAssembly"
                        version="6.0.0.0" processorArchitecture="x86"
                        publicKeyToken="a5aaf5ba15723d5"/>
    
  5. Você pode incluir o manifesto do aplicativo no arquivo de cabeçalho executável binário do aplicativo.

    Nesse caso, adicione também a seguinte linha ao arquivo de cabeçalho do aplicativo:

    CREATEPROCESS\_MANIFEST\_RESOURCE\_ID RT\_MANIFEST "YourApp.exe.manifest"

    Como alternativa, você pode colocar um arquivo de manifesto separado no mesmo diretório que o arquivo executável do aplicativo. O sistema operacional carrega o manifesto do sistema de arquivos primeiro e, em seguida, verifica a seção de recursos do executável. A versão do sistema de arquivos tem precedência.

  6. Os assemblies compartilhados devem ser instalados usando o Windows Installer versão 2.0. Crie um pacote do Windows Installer conforme descrito em Como instalar assemblies Win32 para compartilhamento lado a lado no Windows XP?.

  7. Assemblies privados podem ser instalados usando o Windows Installer versão 2.0. Crie um pacote do Windows Installer conforme descrito em Como instalar assemblies Win32 para o uso privado de um aplicativo no Windows XP?. Você também pode usar qualquer outro instalador para copiar um assembly privado e seu manifesto para a mesma pasta que o arquivo executável do aplicativo.

  8. Teste seu aplicativo para garantir os resultados. Observe que o computador de teste não deve ter o assembly lado a lado registrado.

  9. Implante seu aplicativo ou atualize como um pacote do Windows Installer.

Exemplo de manifesto do aplicativo

Veja a seguir um exemplo de um manifesto do aplicativo:

<?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.mysampleapp" version="1.0.0.0" processorArchitecture="x86"/>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="a5aaf5ba15723d5"/>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Tools.MyPrivateDll" version="2.5.0.0" processorArchitecture="x86"/>
    </dependentAssembly>
  </dependency>
</assembly>