Esta não é uma pergunta problemática, mas uma questão de entendimento geral sobre o trabalho do redirecionamento de ligação de assembly.
Consultas
- Por que o redirecionamento de ligação mostra apenas a versão principal e não os números menores, de compilação e revisão?
As versões antiga e nova são alteradas apenas quando há alterações na versão principal?
<dependentAssembly> <assemblyIdentity name="FooBar" publicKeyToken="32ab4ba45e0a69a1" culture="en-us" /> <bindingRedirect oldVersion="7.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly>
c#
assembly-binding-redirect
Nikhil Agrawal
fonte
fonte
oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"
Respostas:
Por que os redirecionamentos de ligação são necessários? Suponha que você tenha o aplicativo A que faça referência à biblioteca B e também à biblioteca C da versão 1.1.2.5. A biblioteca B, por sua vez, também faz referência à biblioteca C, mas da versão 1.1.1.0. Agora temos um conflito, porque você não pode carregar versões diferentes do mesmo assembly em tempo de execução. Para resolver esse conflito, você pode usar o redirecionamento de ligação, geralmente para a nova versão (mas também pode ser para a antiga). Você faz isso adicionando o seguinte ao arquivo app.config do aplicativo A, na
configuration > runtime > assemblyBinding
seção (veja aqui um exemplo de arquivo de configuração completo):Você também pode especificar um intervalo de versões para mapear:
Agora a biblioteca B, que foi compilada com referência ao C da versão 1.1.1.0, usará o C da versão 1.1.2.5 no tempo de execução. Obviamente, é melhor garantir que a biblioteca C seja compatível com versões anteriores ou isso possa levar a resultados inesperados.
Você pode redirecionar qualquer versão das bibliotecas, não apenas as principais.
fonte
Encontramos um problema com o redirecionamento de ligação para o NewtonSoft.Json. Procuramos a versão do arquivo nas propriedades do arquivo win 10 "9.0.1.19813", procuramos o número e o redirecionamento continuava falhando. Investigações adicionais e descobrimos que estávamos analisando a versão do arquivo e não a versão do assembly. Então, eu me pergunto se as pessoas estão enganando a versão do arquivo (que muda frequentemente) e a versão do assembly (que você não pode ver no Windows 10 File Explorer). Para ver a versão Assembly de uma dll, você pode executá-la no PowerShell. Substitua o nome da dll pelo nome para o qual deseja encontrar a versão.
O resultado acima é.
Veja referências:
Como posso ver a versão do assembly .NET do Windows Vista e mais recente (Windows 7, 2008)?
https://support.microsoft.com/en-nz/help/556041
fonte