Diretrizes para criação de aplicativos e componentes para execução de lado a lado
Siga estas diretrizes gerais para criar aplicativos gerenciados ou componentes projetados para execução de lado a lado:
Vincule a identidade de tipo para uma versão específica de um arquivo.
O common language runtime vincula a identidade de tipo para uma versão de arquivo específico usando os assemblies de nome forte. Para criar um aplicativo ou componente para execução de lado a lado, você deve dar um nome forte todos os assemblies. Isso cria a identidade de tipo exato e garante que qualquer tipo de resolução será direcionada para o arquivo correto. Um assembly de nome forte contém a versão, cultura e informações sobre o editor que o runtime usa para localizar o arquivo correto para completar uma solicitação de ligação.
Use o armazenamento de versão-aware.
O runtime usa o cache global de assemblies para fornecer armazenamento de versão-aware. O cache de assembly global é uma estrutura de diretórios de versão-aware instalada em cada computador que usa o.NET Framework. Os assemblies instalados no cache global de assemblies não são substituídos quando uma nova versão do assembly é instalada.
Crie um aplicativo ou componente que é executado isoladamente.
Um aplicativo ou componente que é executado em isolamento deve gerenciar recursos para evitar conflitos quando duas instâncias do aplicativo ou componente são executados simultaneamente. O aplicativo ou componente também deve usar uma estrutura de arquivo específico de versão.
Aplicativo e isolamento de componente
Uma chave de criação com êxito de um aplicativo ou componente para execução de lado a lado é o isolamento. O aplicativo ou componente deve gerenciar todos os recursos, especialmente de arquivos e/S, de maneira isolada. Siga estas diretrizes para certificar-se de que seu aplicativo ou componente que é executado em isolamento:
Grave no registro de maneira específica de versão. Armazenar valores em seções ou chaves que indicam a versão e não compartilhem informações ou o estado entre as versões de um componente. Isso impede que os dois aplicativos ou componentes em execução ao mesmo tempo substituam as informações.
Torne objetos nomeados do kernel versão específicos para que uma condição de corrida não ocorra. Por exemplo, uma condição de corrida ocorre quando dois sinais de duas versões do mesmo aplicativo espere uns dos outros.
Verifique os nomes de arquivos e diretórios com reconhecimento de versão. Isso significa que as estruturas de arquivo 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.
Instalação e desinstalação de versões
Ao projetar um aplicativo para execução de lado a lado, siga estas diretrizes relacionadas a instalação e desinstalação de versões:
Não exclua as informações de registro que pode ser necessários por outros aplicativos executados em uma versão diferente da.NET Framework.
Não substitua as informações do registro que pode ser necessários por outros aplicativos executados em uma versão diferente da.NET Framework.
Não cancelar o registro de componentes COM que podem ser necessária por outros aplicativos executados em uma versão diferente da.NET Framework.
Não altere InprocServer32 ou outras entradas do registro para um servidor COM que já foi registrado.
Não exclua as contas de usuário ou grupos que podem ser necessários por outros aplicativos executados em uma versão diferente da.NET Framework.
Não adicione qualquer coisa no registro que contém um caminho sem versões.
O número de versão e o número de versão do Assembly de arquivo
Versão do arquivo é um recurso de versão do Win32 não é usado pelo runtime. Em geral, você deve atualizar a versão do arquivo, mesmo para uma QFE no local. Dois arquivos idênticos podem ter informações de versão de arquivo diferente e dois arquivos diferentes podem ter as mesmas informações de versão do arquivo.
A versão do assembly é usada pelo runtime para ligação de assembly. Dois assemblies idênticos com números de versão diferentes são tratados como dois assemblies diferentes pelo runtime.
O o ferramenta Global Assembly Cache (Gacutil. exe) permite que você substitua um assembly quando somente 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 é maior.
Consulte também
Conceitos
Redirecionamento de ligação de assembly
Determinar uma estratégia de manutenção de aplicativos e componentes