Redirecionando a versões de assembly

Quando você cria um aplicativo .NET estrutura em relação a uma versão específica de um assembly de nome forte, o aplicativo usa essa versão do assembly em time de execução.No entanto, às vezes, convém o aplicativo seja executado em relação a uma versão mais recente de um assembly.Um arquivo de configuração do aplicativo, arquivo de configuração da computador ou um arquivo de diretiva de publicador pode redirecionar uma versão de um assembly para outra.Para obter detalhes sobre como o Common linguagem tempo de execução usa esses arquivos para determinar qual versão do assembly usar, consulte Como o tempo de execução Localiza Assemblies.Você pode usar o Ferramenta de configuração do .NET estrutura (Mscorcfg.msc) redirecionar versões de montagem em tanto o nível de aplicativo e nível do computador ou você pode edição diretamente o arquivo de configuração.

Observação:

Não é possível redirecionar as versões para assemblies que não são fortes.O common linguagem tempo de execução ignora a versão para assemblies que não são fortes.

Redirecionando a versões de assembly usando a diretiva de publicador

Fornecedores de módulos (assemblies) podem indicar que aplicativos devem usar uma versão mais recente de um assembly, incluindo um editor diretiva arquivo com o assembly atualizado.O arquivo de diretiva de publicador, que está localizado no cache global de assemblies, contém configurações de redirecionamento do assembly.

Cada principais.secundária versão de um assembly tem seu próprio arquivo de diretiva de publicador.Por exemplo, redirecionamentos versão 1.1.2.222 para 1.1.3.000 e de versão 1.1.2.321 versão 1.1.3.000 ambas ir no mesmo arquivo.No entanto, o redirecionamento de versão 2.0.0.999 para versão 3.0.0.000 entra em um arquivo diferente.

Se houver um arquivo de diretiva de publicador, o tempo de execução verifica esse arquivo depois de verificar o manifesto do assembly e o arquivo de configuração de aplicativo.Fornecedores devem usar o diretivas de publicador apenas quando novo assembly é compatível com versões anteriores com o assembly que está sendo redirecionado.

Você pode ignorar a diretiva de publicador especificando as configurações no arquivo de configuração do aplicativo.

Ignorando a diretiva de publicador

Novas versões de módulos (assemblies) que alega ser compatível com versões anteriores ainda podem interromper um aplicativo.Quando isso acontece, você pode usar a seguinte configuração no arquivo de configuração do aplicativo para tornar o tempo de execução não usar a diretiva de publicador:

<publisherPolicy apply="no" />

Ignorar a diretiva de publicador para manter seu aplicativo em execução para os usuários, mas certifique-se de que relatar o problema para o fornecedor do assembly.Depois que um assembly tiver uma diretiva de publicador, o fornecedor Verifique se o assembly é compatível com versões anteriores e que sistema autônomo clientes podem usar a nova versão tanto quanto possível.

Redirecionando a versões de assembly no nível do aplicativo

Suponha que o fornecedor do assembly lança uma versão mais recente de um assembly que seu aplicativo usa, mas não fornece uma diretiva de publicador, o fornecedor não quer garantir que o novo assembly é compatível com versões anteriores com a versão original.Você pode especificar que seu aplicativo use a versão mais recente do assembly ao colocar informações de ligação de assembly no arquivo de configuração do seu aplicativo.

Redirecionando a versões de assembly no nível da computador

Pode haver casos raros quando quiser que um administrador da computador a todos os aplicativos em uma computador para usar uma versão específica de um assembly.Por exemplo, convém cada aplicativo para usar uma versão de assembly específico porque ele corrige uma falha de segurança.Se um assembly for redirecionado no arquivo de configuração da computador, todos os aplicativos que usam a versão antiga usará a nova versão.O arquivo de configuração da computador substitui o arquivo de configuração do aplicativo e a diretiva de publicador.

Especificar arquivos de configuração de ligação de assembly

O arquivo de configuração do aplicativo, o arquivo de configuração da computador e a publicador diretiva arquivo usar o mesmo esquema XML para processar o redirecionamento de assembly.

Ligação de assembly

Especifique as informações para um assembly, colocando as informações para cada assembly dentro de um <dependentassembly> elemento.The <assemblyidentity> elemento contém informações que identificam um assembly.Você pode ter mais de um <dependentassembly> elemento no arquivo de configuração, mas deve haver exatamente um <assemblyidentity> elemento cada <dependentassembly> elemento.

Para BIND um assembly, você deve especificar a seqüência de caracteres "urn: schemas - microsoft - com:asm.v1" com oxmlns atributo de a <assemblybinding> marca.

Especificação de diretiva de publicador

Para tornar o tempo de execução ignorar a diretiva de publicador para um assembly específico, coloque o <publisherpolicy> elemento o <dependentassembly> elemento.Para tornar o tempo de execução ignoram diretiva do publicador para todos os assemblies que o aplicativo usa, colocar essa configuração no <assemblybinding> elemento.Você também pode usar o Ferramenta de configuração do .NET estrutura (Mscorcfg.msc) para ignorar a diretiva de publicador.

A configuração padrão para o Aplicar atributo é Sim.configuração the Aplicar atributo não substitui qualquer anterior Sim configuraçãos.Por exemplo, se Aplicar is conjunto to não no nível do aplicativo, qualquer assembly específico Aplicar será ignorada, mesmo que ele declara que o valor seja Sim.Assim, a não configuração é o estado de somente útil, à medida que isso se altera o padrão.

Redirecionando a versões de assembly

Para redirecionar a uma versão para outra, use o <bindingredirect> elemento.The oldVersion atributo pode especificar uma versão única ou um intervalo de versões.Por exemplo, <bindingRedirect oldVersion="1.1.0.0-1.2.0.0" newVersion="2.0.0.0"/> Especifica que o tempo de execução deve usar a versão 2.0.0.0 em vez das versões de montagem entre 1.1.0.0 e 1.2.0.0.

Exemplo

O exemplo a seguir mostra como redirecionar uma versão de myAssembly para outro e desativar a diretiva de publicador para mySecondAssembly.

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="myAssembly"
          publicKeyToken="32ab4ba45e0a69a1"
          culture="en-us" />
        <!-- Assembly versions can be redirected in application, 
          publisher policy, or machine configuration files. -->
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
      <assemblyIdentity name="mySecondAssembly"
        publicKeyToken="32ab4ba45e0a69a1"
        culture="en-us" />
        <!-- Publisher policy can be set only in the application 
          configuration file. -->
        <publisherPolicy apply="no" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Redirecionando a vinculação do .NET estrutura Assembly

Você pode usar o appliesTo atributo a <assemblybinding> elemento em um arquivo de configuração de aplicativo para redirecionar referências a uma versão específica do .NET estrutura de ligação de assembly.Esse atributo opcional usa um número de versão do .NET estrutura para indicar qual versão ele se aplica ao.Se nenhum appliesTo atributo for especificado, a <assemblybinding> elemento aplica a todas as versões do .NET estrutura.

The appliesTo atributo foi introduzido no .NET estrutura versão 1.1; ele é ignorado pelo .NET estrutura versão 1.0.Isso significa que todos os <assemblybinding> elementos são aplicados ao usar o .NET estrutura versão 1.0, mesmo se um appliesTo atributo é especificado.

Por exemplo, para redirecionar a ligação do assembly do .NET estrutura versão 1.0 Regcode assembly, você incluiria o seguinte código XML em seu arquivo de configuração do aplicativo.

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" 
    appliesTo="v1.0.3705">
    <dependentAssembly> 
      <!-- assembly information goes here -->
    </dependentAssembly>
  </assemblyBinding>
</runtime>

The <assemblybinding> elementos são sensíveis à ordem.Você deve digitar informações de redirecionamento de ligação de assembly para qualquer assemblies do .NET estrutura versão 1.0 primeiro, seguido de informações de redirecionamento de ligação de assembly para qualquer assemblies do .NET estrutura versão 1.1.Finalmente, insira as informações de redirecionamento de ligação de assembly para qualquer redirecionamento de assembly do .NET estrutura que não usa o appliesTo atributo e, portanto, aplica a todas as versões do .NET estrutura.No caso de conflito no redirecionamento, a primeira demonstrativo de redirecionamento correspondentes no arquivo de configuração é usada.

Por exemplo, para redirecionar uma referência a um assembly do .NET estrutura versão 1.0 e outra referência a um assembly do .NET estrutura versão 1.1, você usaria o padrão mostrado no pseudocódigo a seguir.

<assemblyBinding xmlns="..." appliesTo="v1.0.3705"> 
  <!—.NET Framework version 1.0 redirects here --> 
</assemblyBinding> 

<assemblyBinding xmlns="..." appliesTo="v1.1.5000"> 
  <!—.NET Framework version 1.1 redirects here --> 
</assemblyBinding> 

<assemblyBinding xmlns="..."> 
  <!-- redirects meant for all versions of the runtime --> 
</assemblyBinding>

Consulte também

Tarefas

Como: Criar uma diretiva de publicador

Conceitos

Como o Runtime Localiza Assemblies

Referência

Esquema configurações Runtime

Outros recursos

Assemblies em Common Language Runtime

Programação com assemblies

Configuration Files

Configurando aplicativos

Esquema do arquivo de configuração para o .NET Framework