Compartilhar via


Referências de Assembly parcial

Uma referência de assembly completo inclui o nome de texto, versão, cultura e token de chave pública do assembly (se o assembly tem um nome forte). Uma referência de assembly completo é necessária se você faz referência a qualquer conjunto que é parte do common language runtime ou qualquer conjunto localizado no cache global de assemblies. Também dinamicamente, você pode referenciar um assembly, fornecendo somente informações parciais, como, por exemplo, especificando o nome de assembly.

O uso de referências de assembly parcial não é recomendado, pois ele pode levar a um número de problemas de versionamento:

  • Versões do assembly podem não ser compatível com versões anteriores. Por exemplo, seu código pode funcionar com a versão 1.6 do assembly, mas por causa da referência assembly parcial, você poderá obter uma versão posterior, tem uma alteração incompatível.

  • Versões do assembly não podem ser diretamente compatível. Por exemplo, seu código pode funcionar com a versão 1.6 do assembly, mas por causa da referência assembly parcial, você poderá obter uma versão anterior que não possui o código necessário.

  • Um aplicativo que instala uma nova versão de um assembly pode interromper os aplicativos que usam referências assembly parcial para carregar o assembly, se a nova versão não é compatível.

Porque os possíveis problemas de versionamento é tão grande, o LoadWithPartialName método está marcado como obsoleto na.NET Framework versão 2.0.

Tornando os parcial referências de Assembly

Você pode fazer referências parciais para um assembly em seu código em uma das seguintes maneiras:

Observação

O LoadWithPartialName método é obsoleto.NET Framework versão 2.0.

Usando o LoadWithPartialName método pode introduzir a variabilidade em processo de vinculação. Por exemplo, não se você solicitar uma ligação a um assembly com um nome forte, mas não incluem a chave pública em sua referência, ter nenhuma garantia de que o assembly que você vincula a proveniente do Editor de esperado. Além disso, as referências que não incluem o token de chave público não estão sujeitos a diretiva de versão, para que o aplicativo e os arquivos de configuração de máquina nunca são verificados. Referências parciais usando o LoadWithPartialName método de trabalho melhor em cenários quando quiser pegar a versão mais recente de um assembly.

  • Use um método como System.Reflection.Assembly.Load e fornecer apenas uma referência parcial; Forneça as informações de referência completa no arquivo de configuração do aplicativo.

Referências parciais, usando o método LoadWithPartialName

Observação

O LoadWithPartialName método é obsoleto.NET Framework versão 2.0.

Uma chamada para o LoadWithPartialName método deve incluir pelo menos o nome do assembly texto, mas também pode incluir o token de chave pública, a versão ou a cultura. Porque você está usando um método que espera um parciais de referência, não é necessário incluir informações de referência completa (nome, versão, cultura e, se aplicável, o token de chave público).

Quando você parcialmente referenciar um assembly usando o LoadWithPartialName método, o runtime usa regras específicas para localizar o assembly referenciado. Essas regras incluem:

  1. O runtime verifica o arquivo de configuração do aplicativo para a qualificação de informações para a referência a <qualifyAssembly> elemento. Se uma entrada válida for encontrada, a ligação continua como faria com qualquer referência completa.

  2. O tempo de execução pesquisará o diretório de aplicativo para um assembly que corresponde ao nome do assembly especificado de texto. Se uma correspondência for encontrada, o runtime usa esse assembly.

  3. Se nenhuma correspondência for encontrada no diretório de aplicativo, o runtime verifica o cache global de assemblies para o assembly. Se o token de chave pública, a versão ou a cultura for especificada na referência parcial, o runtime tenta coincidir exatamente o valor. Se nenhuma versão for especificada, o tempo de execução para tenta localizar o assembly com o maior número de versão que corresponde aos critérios especificados. Se a cultura ou o token de chave público não for especificado, comportamento do runtime será indefinido.

    Por exemplo, suponha que a chamada Assembly.LoadWithPartialName("math, Version 5.0.0.0") é feita e o conteúdo do cache global de assemblies é as seguintes:

    math,version=5.0.0.0,publicKeyToken=11111111,culture=de
    math,version=5.0.0.0,publicKeyToken=22222222,culture=en
    

    O resultado da chamada é indefinido. O runtime seleciona o primeiro conjunto que encontra.

    Como outro exemplo, suponha que a chamada Assembly.LoadWithPartialName("math") é feita e o conteúdo do cache global de assemblies é as seguintes:

    math,version=5.0.0.0,publicKeyToken=11111111,culture=neutral
    math,version=6.0.0.0,publicKeyToken=22222222,culture=neutral
    

    O resultado da chamada é uma ligação para o assembly de matemática, versão 6.0.0.0.

    Como um exemplo final, suponha que a chamada Assembly.LoadWithPartialName("math,publicKeyToken=11111111") é feita e o conteúdo do cache global de assemblies é as seguintes:

    math,version=5.0.0.0,publicKeyToken=11111111,culture=neutral
    math,version=6.0.0.0,publicKeyToken=22222222,culture=neutral
    

    O resultado da chamada é uma ligação para o assembly de matemática, versão 5.0.0.0.

Referências parciais com informações de qualificação.

Você também pode fazer uma referência dinâmica usando um método, como System.Reflection.Assembly.Load e fornecer apenas parciais de referência, mas você e qualificar a referência usando o <qualifyAssembly> elemento no arquivo de configuração do aplicativo. Esse elemento permite que você forneça as informações de referência completa (nome, versão, cultura e, se aplicável, o token de chave público) em seu arquivo de configuração do aplicativo 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.Porque as configurações são aplicadas por aplicativo e não por conjunto, um assembly compartilhado usando esse tipo de referência parcial exigiria cada aplicativo usando o assembly compartilhado para as informações de qualificação em seu arquivo de configuração.

Consulte também

Conceitos

Como o Runtime Localiza Assemblies

Etapa 1: Examinando os arquivos de configuração

Etapa 2: Verificando anteriormente Assemblies referenciados

Etapa 3: Verificando o Cache Global de assemblies

Etapa 4: Localizando que o Assembly através de bases de código ou investigação