Compartilhar via


Conceitos de aplicativos isolados e montagens lado a lado

Um aplicativo é considerado um aplicativo isolado se todos os seus componentes são lado a lado assemblies. Um assembly lado a lado é uma coleção de recursos — um grupo de DLLs, classes do windows, COM servidores, bibliotecas de tipos ou interfaces — disponíveis para um aplicativo para usar em tempo de execução. Normalmente, um assembly lado a lado é uma a diversas DLLs. Por exemplo, o assembly de biblioteca C Runtime Library contém três DLLs—msvcr90.dll, msvcm90.dll e msvcp90.dll—and é usado por aplicativos quando eles são criados usando as funções da biblioteca CRT.

Particular ou compartilhada

Um assembly lado a lado pode ser compartilhado ou particular. Os conjuntos lado a lado compartilhados pode ser usado por vários aplicativos que especificar, em seus manifestos, uma dependência de assembly. Várias versões de conjuntos de módulos lado a lado podem ser compartilhadas por diferentes aplicativos em execução ao mesmo tempo. A assembly particular é um assembly que é implantado com um aplicativo e está disponível para o uso exclusivo desse aplicativo. Conjuntos privados são instalados na pasta que contém o arquivo executável do aplicativo ou uma de suas subpastas.

Manifestos e ordem de pesquisa

Ambos aplicativos isolados e lado a lado assemblies são descritos por manifestos. Um manifesto é um documento XML que pode ser um arquivo XML externo ou incorporado dentro de um aplicativo ou um assembly como um recurso. O arquivo de manifesto de um aplicativo isolado é usado para gerenciar os nomes e versões de assemblies lado a lado compartilhados, para que o aplicativo deve vincular em tempo de execução. O manifesto do assembly de um lado a lado Especifica nomes, versões, recursos e assemblies dependentes de conjuntos de módulos lado a lado. Para um assembly compartilhado do lado a lado, o manifesto é instalado na pasta WinSxS\Manifests. No caso de um assembly particular, é recomendável incluir seu manifesto na DLL como um recurso com ID igual a 1 e o nome do assembly particular pode ser o mesmo que o nome da DLL. Para obter mais informações, consulte Particular Assemblies.

Em tempo de execução, o Windows usa as informações de assembly do manifesto do aplicativo para pesquisar e carregar o assembly correspondente do lado a lado. Se um aplicativo isolado Especifica uma dependência de assembly, o sistema operacional primeiro procura o assembly entre os assemblies compartilhados na pasta WinSxS. Se o assembly necessário não for encontrado, o sistema operacional procura um assembly particular instalado em uma pasta da estrutura de diretório do aplicativo. Para obter mais informações, consulte A seqüência de pesquisa de Assembly.

A alteração de dependências

É possível alterar as dependências de assembly do lado a lado, depois que um aplicativo foi implantado, modificando o Os arquivos de configuração do Publisher e Os arquivos de configuração de aplicativo. Um arquivo de configuração do publisher, também chamado de um arquivo de diretiva de Editor é um arquivo XML que redireciona globalmente os aplicativos e assemblies usando uma versão de um assembly lado a lado para outra versão do mesmo assembly. Um bom exemplo de quando a alteração de dependência pode ser usada quando uma correção de bug ou correção de segurança é implantada para um determinado assembly lado a lado e um editor deste assembly gostariam de redirecionar todos os aplicativos para usar a nova versão do assembly. Um arquivo de configuração do aplicativo é um arquivo XML que redireciona um aplicativo específico que usa uma versão de um assembly lado a lado para outra versão do mesmo assembly. Ele pode ser usado para redirecionar um aplicativo específico para usar uma versão de um assembly de lado a lado diferente daquele definido no arquivo de configuração global do publisher. Para obter mais informações, consulte configuração.

Bibliotecas Visual C++

Bibliotecas como, por exemplo, ATL, MFC, CRT, C++ padrão, OpenMP e MSDIA são implantadas como assemblies do lado a lado compartilhados no cache de assembly nativo. Por padrão, todos os aplicativos criados com Visual C++ são criados com o manifesto incorporado dentro do binário final, que descreve as dependências deste binário em bibliotecas do Visual C++. Para compreender a geração de manifesto para aplicativos do Visual C++, consulteNoções básicas sobre geração de manifesto para programas em C/C++

Consulte também

Outros recursos

A criação de C/C++ aplicativos isolados e montagens lado a lado