Como o Runtime Localiza Assemblies
Para implantar seu aplicativo .NET estrutura, você deve entender como o Common linguagem tempo de execução localiza e vincula os assemblies que compõem o seu aplicativo.Por padrão, o tempo de execução tenta BIND com a versão exata de um assembly que o aplicativo foi criado.Esse comportamento padrão pode ser substituído pelo configurações de arquivo.
O common linguagem tempo de execução executa uma série de etapas quando tentar localizar um assembly e resolver uma referência de assembly.Cada etapa é explicada nas seções a seguintes.O termo a sondagem é freqüentemente usada para descrever como o tempo de execução localiza assemblies; ele refere-se ao conjunto de heurística usados para localizar o assembly com base em seu nome e uma cultura.
Observação: |
---|
Você pode exibir informações de ligação no arquivo de log usando o Assembly Binding Log Viewer (Fuslogvw.exe), incluído no Windows Software Development Kit (SDK). |
Iniciando a BIND
O processo de localizar e vincular a um assembly começa quando o tempo de execução tenta resolver uma referência a outro assembly.Essa referência pode ser estático ou dinâmico.Compilador registros estático referências de metadados do manifesto do assembly no time de compilação.Referências dinâmicas são construídas dinamicamente sistema autônomo resultado de chamar vários métodos, sistema autônomo sistema.reflexão.Assembly.Load.
A melhor maneira de consultar um assembly é usar uma referência completa, incluindo o nome do assembly, versão, cultura e token de chave pública (se houver).O tempo de execução usa essas informações para localizar o assembly, seguindo as etapas descritas posteriormente nesta seção.O tempo de execução usa o mesmo processo de resolução seja a referência para um assembly estático ou dinâmico.
Você também pode fazer uma referência a um assembly dinâmica fornecendo o método de chamada com apenas parcial informações sobre o assembly, sistema autônomo especificar somente o nome do assembly.Nesse caso, o diretório de aplicativo é pesquisado para o assembly, e nenhuma Outros verificação ocorre.Você faz uma referência parcial usando qualquer um dos vários métodos para carregar assemblies sistema autônomo sistema.reflexão.Assembly.Load or sistema.AppDomain.Load.
Finalmente, você pode fazer uma referência dinâmica usando um método sistema autônomo sistema.reflexão.Assembly.Load e fornecer informações apenas parcial; você qualificar, em seguida, a referência usando o <qualifyassembly> elemento no arquivo de configuração de aplicativo.Esse elemento permite que você forneça as informações de referência completo (nome, versão, cultura e, se aplicável, o token de chave pública) em seu arquivo de configuração do aplicativo em vez de no seu código.Você usaria esta técnica para qualificar completamente uma referência a um assembly fora do diretório do aplicativo ou se você quisesse consultar um assembly no cache de assembly global mas queria a conveniência de especificar a referência completa no arquivo de configuração em vez de no seu código.
Observação: |
---|
Este tipo de referência parcial não deve ser usado com assemblies que são compartilhados entre vários aplicativos.Como as configurações são aplicadas por aplicativo e não por conjunto, um assembly compartilhado usando esse tipo de referência parcial exigiria que cada aplicativo usando o conjunto compartilhado para as informações de qualificação em seu arquivo de configuração. |
O tempo de execução usa as seguintes etapas para resolver uma referência de assembly:
Determina a versão correta do assembly examinando arquivos de configuração aplicáveis, incluindo o arquivo de configuração do aplicativo, arquivo de diretiva de publicador e arquivo de configuração da computador.Se o arquivo de configuração estiver localizado em uma computador remota, o tempo de execução deve localizar e baixar o arquivo de configuração do aplicativo pela primeira vez.
Verifica se o nome do assembly foi limite a antes de e, em caso afirmativo, use o assembly carregado anteriormente.Se uma solicitação anterior para carregar o assembly que falhou, a solicitação falhou imediatamente sem tentar carregar o assembly.
Observação: O cache de falhas de ligação do assembly é novo no .NET estrutura versão 2.0.
Verifica o modelo global assembly cache.Se o assembly é encontrado, o tempo de execução usará este assembly.
Testes do assembly usando as seguintes etapas:
Se a diretiva de configuração e o publicador não afeta a referência original e se a solicitação de ligação foi criada usando o Assembly.LoadFrom método, o tempo de execução verifica as dicas de localização.
Se uma base de código for encontrada nos arquivos de configuração, o tempo de execução verifica somente neste local.Se esse teste falhar, o tempo de execução determina que a solicitação de ligação falhou e nenhuma Outros investigação ocorre.
Testes do assembly usando a heurística descrita o seção de investigação.Se o assembly não for encontrado após investigação, o tempo de execução solicita o Windows Installer para fornecer o assembly.Isso funciona sistema autônomo um recurso instalar sob demanda.
Observação: Não há nenhuma versão verificando assemblies sem nomes fortes, nem faz o tempo de execução do check no cache global de assemblies para assemblies sem nomes fortes.
Consulte também
Conceitos
Cenários de implantação de aplicativos do .NET estrutura
Etapa 1: Examinando os arquivos de configuração
Etapa 2: Verificando anteriormente assemblies referenciados
Etapa 3: Verificando o cache global de assembly
Etapa 4: Localizando que o assembly por meio de bases de código ou probing
Referências de assembly parcial