Como posso indicar que várias versões de um assembly dependente estão corretas?

StackOverflow https://stackoverflow.com/questions/54546

  •  09-06-2019
  •  | 
  •  

Pergunta

Os assemblies A e B são implantados de forma privada e têm nomes fortes.O conjunto A contém referências ao conjunto B.Existem duas versões do Assembly B:B1 e B2.Quero poder indicar para o Assembly A que ele pode se ligar a B1 ou B2 - de preferência, incorporando essas informações no próprio Assembly.Quais são minhas opções?

Estou um pouco familiarizado com a política de controle de versão e como ela se aplica ao GAC, mas não quero depender da presença desses assemblies no GAC.

Foi útil?

Solução

Existem vários lugares onde você pode indicar ao .Net Framework que uma versão específica de uma biblioteca fortemente tipada deve ser preferida a outra.Estes são:

  • Arquivo de política do editor
  • arquivo machine.config
  • arquivo app.config

Todos esses métodos utilizam o "<bindingRedirect>" elemento que pode instruir o .Net Framework a vincular uma versão ou intervalo de versões de um assembly a uma versão específica.

Aqui está um pequeno exemplo da tag em uso para vincular todas as versões de um assembly até a versão 2.0 à versão 2.5:

<assemblyBinding>
    <dependantAssembly>
        <assemblyIdentity name="foo" publicKeyToken="00000000000" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0 - 2.0.0.0" newVersion="2.5.0.0" />
    </dependantAssembly>
</assemblyBinding>

Há muitos detalhes, então é melhor ler sobre Redirecionando versões de assembly no MSDN para decidir qual método é melhor para o seu caso.

Outras dicas

Você pode definir a política de versão em seu arquivo app.config.Alternativamente, você pode carregar manualmente esses assemblies com uma chamada para Assembly.LoadFrom() quando isso é feito, a versão do assembly não é considerada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top