Criando conjuntos de C/C++ lado a lado
A assembly lado a lado é um conjunto de recursos — um agrupar de DLLs, classes de janelas, servidores COM, bibliotecas de tipos ou interfaces — disponível para um aplicativo para usar em tempo de execução.In Visual C++ 2005, sistema autônomo ATL, MFC, C++ padrão e CRT bibliotecas tem sido reempacotadas em vários assemblies lado a lado que podem ser redistribuídas com aplicativos do Visual C++ em forma de módulos (assemblies) compartilhados ou particular. Consulte O Visual C++ Libraries como compartilhados assemblies Side-by-Side para obter mais informações.A principal vantagem de remontagem DLLs em módulos (assemblies) é que várias versões de módulos (assemblies) podem ser usados por aplicativos ao mesmo time e é possível composições de serviço instalado no momento no caso de uma versão de atualização.
Um aplicativo do Visual C++ pode usar uma ou várias DLLs em diferentes partes do aplicativo.Em tempo de execução, as DLLs são carregadas no processo principal e o código necessário é executado.O aplicativo depende do sistema operacional para localizar as DLLs solicitadas, compreender o que Outros DLLs dependentes tem de ser carregada e, em seguida, carregá-los em conjunto com a DLL solicitada.Em versões de sistemas operacionais Windows anteriores ao Windows XP, Windows servidor 2003 e Windows Vista, o carregador do sistema operacional procura por DLLs dependentes na pasta local do aplicativo ou outra pasta especificada no caminho do sistema.No Windows XP, Windows servidor 2003 e Windows Vista, o carregador do sistema operacional também pode procurar por DLLs dependentes usando um manifestoo arquivo e procurar conjuntos lado a lado que contêm essas DLLs.
Por padrão, quando uma DLL é construída com Visual Studio 2005 Ele tem um manifesto do aplicativo incorporado sistema autônomo um recurso RT_MANIFEST com ID igual a 2.Apenas para um executável, esse manifesto descreve dependências dessa DLL em outros assemblies.Isso pressupõe que a DLL não é parte de um assembly lado a lado e aplicativos que dependem dessa DLL não for usar um manifesto do aplicativo para carregá-lo, mas em vez disso, contam com o carregador do sistema operacional para localizar essa DLL no caminho do sistema.
Observação: |
---|
É importante para uma DLL que usa um manifesto do aplicativo para que o manifesto incorporado sistema autônomo um recurso com ID igual a 2.Se a DLL é carregada dinamicamente no tempo de execução (por exemplo, usando o LoadLibrary função), o carregador do sistema operacional carrega os assemblies dependentes especificados no manifesto da DLL.Um manifesto do aplicativo externo para DLLs não é verificado durante um LoadLibrary Chame. Se o manifesto não estiver incorporado, o carregador pode tentar carregar as versões incorretas de módulos (assemblies) ou falha ao localizar para encontrar assemblies dependentes. |
Um ou vários relacionados que podem ser reagrupadas DLLs em um assembly lado a lado com um correspondente manifesto do assembly, que descreve sistema autônomo arquivos que formam o conjunto de módulos (assembly) bem sistema autônomo a dependência do assembly em outros assemblies lado a lado.
Observação: |
---|
Se um assembly contém uma DLL, é recomendável para incorporar o manifesto do assembly para essa DLL sistema autônomo um recurso com ID igual a 1 e dar o mesmo nome que a DLL de assembly particular.Por exemplo, se o nome da DLL for mylibrary.dll, o valor do atributo name utilizado no elemento <assemblyidentity>do manifesto de também pode ser mylibrary.Em alguns casos, quando uma biblioteca possui uma extensão diferente da .dll (por exemplo, um projeto MFC ActiveX Controls cria uma biblioteca .ocx) um manifesto do assembly externo pode ser criado.Nesse caso, o nome do assembly e manifesto deve ser diferente do nome da DLL (por exemplo, MyAssembly, MyAssembly.manifest e mylibrary.ocx).No entanto ainda é recomendável renomear essas bibliotecas para que o extensão.dll e incorporar o manifesto sistema autônomo um recurso para reduzir o custo de manutenção futura deste assembly.Para obter mais informações sobre como o sistema operacional procura particular assemblies, consulte sequência de pesquisa de assembly. |
Essa alterar pode permitir a implantação de DLLs correspondentes sistema autônomo um assembly particular em uma pasta local do aplicativo ou sistema autônomo um assembly compartilhado no cache de conjunto de módulos de WinSxS.Várias etapas que precisam ser seguidas para obter um comportamento de tempo de execução correto desse novo assembly; eles são descritos em Diretrizes para criar assemblies lado a lado.Depois de um assembly foi criado corretamente pode implantado sistema autônomo um assembly de compartilhado ou particular em conjunto com um aplicativo que depende dele.Ao instalar conjuntos lado a lado sistema autônomo um assembly compartilhado, ou você pode seguir sistema autônomo diretrizes descritas no Instalando conjuntos de Win32 para o compartilhamento lado a lado no Windows XP or use módulos de mesclagem.Quando a instalação de módulos (assemblies) lado a lado sistema autônomo um assembly particular, você pode simplesmente copiar o manifesto DLL, recursos e assembly correspondente parte do processo de instalação para a pasta local do aplicativo no computador de destino, garantindo que este assembly pode ser encontrado por meio de carregador no tempo de execução (consulte sequência de pesquisa de assembly).Outra maneira é usar Windows Installer e siga as diretrizes descritas no Instalando conjuntos de Win32 para o uso privado de um aplicativo no Windows XP.
Consulte também
Conceitos
Construção C/C ++ isolada de aplicativos
Outros recursos
Desenvolvimento C/C ++ isolada de aplicativos e assemblies lado a lado