Compartilhar via


Etapa 4: Localizando que o assembly por meio de bases de código ou probing

Após a versão correta do assembly foi determinada usando as informações na referência do assembly de chamada e nos arquivos de configuração e depois tenha feito check-in do cache de assembly global (somente para fortes assemblies), o common linguagem tempo de execução tenta encontrar o assembly.O processo de localização de um assembly envolve as seguintes etapas:

  1. If a <codebase> elemento é encontrado no arquivo de configuração do aplicativo, o tempo de execução verifica o local especificado.Se uma correspondência for encontrada, esse assembly é usado e nenhum probing ocorre.Se o assembly não for encontrado lá, a solicitação de ligação de falha.

  2. O tempo de execução, em seguida, testes para o assembly referenciado usando as regras especificadas posteriormente nesta seção.

Observação:

Se você tiver várias versões de um assembly em um diretório e você deseja fazer referência a uma determinada versão de assembly, você deve Use o <codebase> elemento, em vez do privatePath atributo das <probing> elemento.Se você usar o <probing> elemento, o time de execução deixa de verificar na primeira vez que ele encontrar um assembly que corresponde ao nome simples do assembly referenciado, se uma correspondência correta ou não.Se for uma correspondência correta, esse assembly será usado.Se não for uma correspondência correta, paradas de investigação e ligação falhará.

Localizar o assembly por meio de bases de código

Base de código para fornecer informações usando um <codebase> elemento no arquivo de configuração.Esta base de código sempre é verificada antes do tempo de execução as tentativas de teste para o assembly referenciado.Se redirecionar um arquivo de política de publicador que contém a versão final também contém um <codebase> elemento, que <codebase> elemento é o que é usado.Por exemplo, se seu arquivo de configuração do aplicativo especifica um <codebase> elemento e um arquivo de diretiva de publicador que é substituir as informações do aplicativo também especifica um <codebase> elemento, a <codebase> elemento no arquivo de diretiva de publicador é usado.

Se nenhuma correspondência for encontrada no local especificado pelo <codebase> elemento, a solicitação de ligação de falha e não executar mais etapas são.Se o tempo de execução determina que um assembly atenderem do assembly chamada aos critérios, ele usará esse assembly.Quando o arquivo especificado pelo determinado <codebase> elemento é carregado, o tempo de execução verifica Certifique-se de que o nome, versão, cultura e chave pública correspondem à referência do assembly de chamada.

Observação:

Assemblies referenciados fora do diretório raiz do aplicativo deve ter nomes fortes e ambos devem ser instalados no cache global de assemblies ou especificado usando o <codebase> elemento.

Localizando o assembly por meio de probing

Se não houver nenhum <codebase> elemento no arquivo de configuração de aplicativo, o tempo de execução testes para o assembly usando quatro critérios:

  • base de aplicativo, que é o local raiz onde o aplicativo está sendo executado.

  • Cultura é o atributo de cultura do assembly referenciado.

  • Nome, que é o nome do assembly referenciado.

  • The privatePath atributo das <probing> elemento, que é a lista de subdiretórios no local da raiz definidos pelo usuário.Esse local pode ser especificado no arquivo de configuração do aplicativo e no código gerenciado usando o AppendPrivatePath propriedade para um domínio do aplicativo. Quando especificado no código gerenciado, o código gerenciado privatePath é analisada pela primeira vez, seguido do caminho especificado no arquivo de configuração de aplicativo.

A base de aplicativos e diretórios de cultura de investigação

O tempo de execução sempre começa a sondagem na base do aplicativo, que pode ser uma URL ou diretório da raiz do aplicativo em um computador.Se o assembly mencionado não for encontrado na base de aplicativo e nenhuma informação de cultura for fornecida, o tempo de execução procura todas as subpastas com o nome do assembly.Os diretórios analisados incluem:

   [base de aplicativo] / [nome do assembly] .dll

   [base de aplicativo] / [nome do assembly] / [nome do assembly] .dll

Se informações de cultura for especificadas para o assembly mencionado, apenas os seguintes diretórios são analisados:

   [base de aplicativo] / [cultura] / [nome do assembly] .dll

   [base de aplicativo] / [cultura] / [nome do assembly] / [nome do assembly] .dll

Com o atributo privatePath de investigação

Os subdiretórios cultura além dos subdiretórios nomeados para o assembly mencionado, o tempo de execução testes também diretórios especificados usando o privatePath atributo das <probing> elemento.Os diretórios especificados usando o privatePath o atributo deve ser subdiretórios do diretório raiz do aplicativo. Os diretórios analisados variam dependendo se informações de cultura são incluídas na solicitação de assembly referenciado.

O time de execução deixa de verificar na primeira vez que ele encontrar um assembly que corresponde ao nome simples do assembly referenciado, se uma correspondência correta ou não.Se for uma correspondência correta, esse assembly será usado.Se não for uma correspondência correta, paradas de investigação e ligação falhará.

Se cultura for incluída, são analisados os seguintes diretórios:

   [base de aplicativo] / [binpath] / [cultura] / [nome do assembly] .dll

   [base de aplicativo] / [binpath] / [cultura] / [nome do assembly] / [nome do assembly] .dll

Se as informações de cultura não for incluídas, os seguintes diretórios são analisados:

   [base de aplicativo] / [binpath] / [nome do assembly] .dll

   [base de aplicativo] / [binpath] / [nome do assembly] / [nome do assembly] .dll

Exemplos de investigação

Recebe as seguintes informações:

O tempo de execução testes seguintes URLs:

   http://www.Code.Microsoft.com/de/myAssembly.dll

   http://www.Code.Microsoft.com/de/myAssembly/myAssembly.dll

   http://www.Code.Microsoft.com/bin/de/myAssembly.dll

   http://www.Code.Microsoft.com/bin/de/myAssembly/myAssembly.dll

Vários assemblies com o mesmo nome

O exemplo a seguir mostra como configurar vários módulos (assemblies) com o mesmo nome.

   <dependentAssembly>
      <assemblyIdentity name="Server" publicKeyToken="c0305c36380ba429" /> 
         <codeBase version="1.0.0.0" href="v1/Server.dll"/>
         <codeBase version="2.0.0.0" href="v2/Server.dll"/>
   </dependentAssembly>

Outros locais analisadas

assembly local também pode ser determinada usando o contexto de ligação corrente.Essa maior geralmente ocorre quando o Assembly.LoadFrom método é usado e, em cenários de interoperabilidade COM. Se um assembly usa o LoadFrom método para fazer referência a outro assembly local do assembly de chamada é considerado como uma dica sobre onde encontrar o assembly mencionado. Se uma correspondência for encontrada, esse conjunto é carregado.Se nenhuma correspondência for encontrada, o tempo de execução continua com sua semântica de Pesquisar e, em seguida, consulta o Windows Installer para fornecer o assembly.Se nenhum assembly for fornecido, que corresponda à solicitação de ligação, uma exceção é lançada.Essa exceção é um TypeLoadException no código gerenciado se um tipo foi referenciado, ou um FileNotFoundException Se um assembly que está sendo carregado não foi encontrado.

Por exemplo, se Assembly1 referencia Assembly2 e Assembly1 tiver sido baixado de http://www.code.microsoft.com/utils, esse local é considerado uma dica sobre onde encontrar Assembly2.dll.O tempo de execução, em seguida, testes para o assembly em http://www.code.microsoft.com/utils/Assembly2.dll e http://www.code.microsoft.com/utils/Assembly2/Assembly2.dll.Se Assembly2 não for encontrado em um desses locais, o tempo de execução consultará o Windows Installer.

Consulte também

Conceitos

Como o Runtime Localiza Assemblies

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

Referências de assembly parcial