Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Este artigo é específico do .NET Framework. Ele não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.
Siga estas diretrizes gerais para criar aplicativos ou componentes gerenciados projetados para execução lado a lado:
Associe a identidade do tipo a uma versão específica de um arquivo.
O Common Language Runtime associa a identidade de tipo a uma versão específica do arquivo usando assemblies com nome forte. Para criar um aplicativo ou componente para execução lado a lado, você deve dar a todos os assemblies um nome forte. Isso cria uma identidade de tipo precisa e garante que qualquer resolução de tipo seja direcionada para o arquivo correto. Um assembly de nome forte contém a versão, a cultura e as informações do publicador que o runtime usa para localizar o arquivo correto para atender a uma solicitação de associação.
Use o armazenamento com reconhecimento de versão.
O runtime usa cache de assembly global para fornecer o armazenamento com reconhecimento de versão. O cache de assembly global é uma estrutura de diretórios com reconhecimento de versão instalada em todos os computadores que usam o .NET Framework. Os assemblies instalados no cache de assembly global não são substituídos quando uma nova versão do assembly é instalada.
Crie um aplicativo ou componente executado isoladamente.
Um aplicativo ou componente executado isoladamente deve gerenciar recursos para evitar conflitos quando duas instâncias do aplicativo ou componente estão sendo executadas simultaneamente. O aplicativo ou componente também deve usar uma estrutura de arquivo específica à versão.
Isolamento de aplicativos e componentes
Uma chave para projetar com êxito um aplicativo ou componente para execução lado a lado é o isolamento. O aplicativo ou componente deve gerenciar todos os recursos, especialmente a entrada/saída de arquivos, de maneira isolada. Siga estas diretrizes para garantir que seu aplicativo ou componente seja executado isoladamente:
Escreva no registro de uma forma específica para cada versão. Armazene valores em hives ou chaves que indicam a versão e não compartilhe informações ou estado entre versões de um componente. Isso impede que dois aplicativos ou componentes em execução ao mesmo tempo substituam as informações.
Torne os objetos kernel nomeados específicos da versão para que não ocorra uma condição de corrida. Por exemplo, uma condição de corrida ocorre quando dois semáforos de duas versões do mesmo aplicativo esperam um pelo outro.
Torne os nomes de arquivo e diretório com reconhecimento de versão. Isso significa que as estruturas de arquivos devem contar com informações de versão.
Crie contas de usuário e grupos de maneira específica à versão. Contas de usuário e grupos criados por um aplicativo devem ser identificados por versão. Não compartilhe contas de usuário e grupos entre versões de um aplicativo.
Instalando e desinstalando versões
Ao criar um aplicativo para execução lado a lado, siga estas diretrizes relativas à instalação e desinstalação de versões:
Não exclua informações do registro que possam ser necessárias para outros aplicativos em execução em uma versão diferente do .NET Framework.
Não substitua informações no registro que possam ser necessárias para outros aplicativos em execução em uma versão diferente do .NET Framework.
Não cancele o registro de componentes COM que possam ser necessários para outros aplicativos em execução em uma versão diferente do .NET Framework.
Não altere InprocServer32 ou outras entradas do Registro para um servidor COM que já foi registrado.
Não exclua contas de usuário ou grupos que possam ser necessários para outros aplicativos em execução em uma versão diferente do .NET Framework.
Não adicione nada ao registro que contenha um caminho não versionado.
Número de versão do arquivo e número de versão do Assembly
A versão do arquivo é um recurso de versão do Win32 que não é usado pelo runtime. Em geral, você atualiza a versão do arquivo até mesmo para uma atualização in-loco. Dois arquivos idênticos podem ter informações de versão de arquivo diferentes e dois arquivos diferentes podem ter as mesmas informações de versão do arquivo.
A versão do assembly é usada pelo runtime para a associação do assembly. Dois assemblies idênticos com números de versão diferentes são tratados como dois assemblies diferentes pelo runtime.
A ferramenta Cache de Assembly Global (Gacutil.exe) permite que você substitua um assembly quando apenas o número de versão do arquivo é mais recente. O instalador geralmente não instala em um assembly, a menos que o número de versão do assembly seja maior.