Partilhar via


Conceitos de aplicativos isolados e assemblies lado a lado

Um aplicativo é considerado aplicativo isolado quando todos os seus componentes são assemblies lado a lado. Um assembly lado a lado é uma coleção de recursos – um grupo de DLLs, classes windows, servidores COM, bibliotecas de tipos ou interfaces – que são implantados juntos e disponibilizados para um aplicativo usar no tempo de execução. Normalmente, um assembly lado a lado é um para várias DLLs.

Compartilhado ou particular

Um assembly lado a lado pode ser compartilhado ou particular. Os assemblies lado a lado compartilhados podem ser usados por vários aplicativos que especificam, em seus manifestos, uma dependência do assembly. Várias versões de um assembly lado a lado podem ser compartilhadas por aplicativos diferentes que são executados ao mesmo tempo. Um assembly particular é um assembly que foi implantado com um aplicativo para o uso exclusivo desse aplicativo. Os assemblies particulares são instalados na pasta que contém o arquivo executável do aplicativo ou uma de suas subpastas.

Manifestos e ordem de pesquisa

Os aplicativos isolados e assemblies lado a lado são descritos por manifestos. Um manifesto é um documento XML que pode ser um arquivo externo ou pode ser inserido em um aplicativo ou em um assembly como um recurso. O arquivo de manifesto de um aplicativo isolado é usado para gerenciar os nomes e as versões dos assemblies lado a lado compartilhados aos quais o aplicativo deve se associar no tempo de execução. O manifesto de um assembly lado a lado especifica nomes, versões, recursos e os assemblies dependentes de assemblies lado a lado. Para um assembly lado a lado compartilhado, seu manifesto é instalado na pasta %WINDIR%\WinSxS\Manifests\. No caso de um assembly particular, recomendamos que você inclua seu manifesto na DLL como um recurso que tenha uma ID igual a 1. Você também pode dar ao assembly particular o mesmo nome da DLL. Para obter mais informações, consulte Assemblies particulares.

No momento da execução, o Windows usa as informações do assembly do manifesto do aplicativo para procurar e carregar o assembly lado a lado correspondente. Se um aplicativo isolado especificar uma dependência do assembly, o sistema operacional procura pelo assembly primeiro entre os assemblies compartilhados em cache de assembly nativo na pasta %WINDIR%\WinSxS\. Se o assembly necessário não for localizado, o sistema operacional procurará um assembly particular em uma pasta da estrutura de diretórios do aplicativo. Para obter mais informações, consulte Sequência de pesquisa de assemblies.

Alterando dependências

Você pode alterar as dependências do assembly lado a lado após a implantação de um aplicativo modificando os arquivos de configuração do editor e os arquivos de configuração do aplicativo. Um arquivo de configuração do editor, também conhecido como um arquivo de política do editor, é um arquivo XML que redireciona globalmente aplicativos e assemblies do uso de uma versão de um assembly lado a lado para o uso de outra versão do mesmo assembly. Por exemplo, você poderia alterar uma dependência quando uma correção de bug ou de segurança é implantada para um assembly lado a lado e você deseja redirecionar todos os aplicativos para usar a versão corrigida. Um arquivo de configuração do aplicativo é um arquivo XML que redireciona um aplicativo específico do uso de uma versão de um assembly lado a lado para o uso de outra versão do mesmo assembly. Você pode usar um arquivo de configuração do aplicativo para redirecionar um aplicativo específico para usar uma versão de um assembly lado a lado que seja diferente daquela definida no arquivo de configuração do editor. Para obter mais informações, consulte Configuração.

Bibliotecas do Visual C++

No Visual Studio 2005 e no Visual Studio 2008, as bibliotecas redistribuíveis como ATL, MFC, CRT, C++ padrão, OpenMP e MSDIA foram implantadas como assemblies lado a lado compartilhados no cache de assembly nativo. Na versão atual, as bibliotecas redistribuíveis usam a implantação central. Por padrão, todos os aplicativos que são compilados usando o Visual C++ são compilados com o manifesto inserido no final binário, e o manifesto descreve as dependências do binário nas bibliotecas do Visual C++. Para entender a geração de manifesto para aplicativos do Visual C++, consulte Noções básicas sobre geração de manifesto para programas do C/C++. Um manifesto não é necessário para aplicativos que são vinculados estaticamente às bibliotecas que eles usam, ou que usam a implantação local. Para obter mais informações sobre a implantação, consulte Implantação em Visual C++ 2010.

Consulte também

Outros recursos

Compilando aplicativos isolados do C/C++ e assemblies lado a lado