Um programa WinForm .NET que escrevi há algum tempo. Porque faz referência a muitos arquivos de biblioteca, mas esses arquivos de biblioteca foram corrigidos recentemente para alguns bugs e algoritmos. Mas o arquivo principal do programa não mudou muito. Portanto, não é como recompilar o programa principal. Assim, todas as novas versões dos arquivos DLL foram copiadas para o diretório em execução, na esperança de que o programa principal pudesse chamar diretamente a nova versão do arquivo de biblioteca. Descobriu-se que esses arquivos de biblioteca foram assinados com Nome Forte. Ocorre um erro assim que o programa principal é chamado, informando que o arquivo desta versão não foi encontrado.
Mais tarde, verifiquei o MSDN e descobri que apenas adicionar o nó de tempo de execução à configuração é suficiente.
<tempo de execução>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MinhaAssembly"
publicKeyToken="2b7c3a3291de04"
cultura="neutro" />
<bindingRedirect oldVersion="3.0.0.8"
novaVersão="4.1.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
No entanto, o pré-requisito para isso é que o PublicKeyToken das duas DLLs sejam iguais, o que significa que eles precisam ser assinados com o mesmo arquivo sn.
Obviamente, se o arquivo da sua biblioteca não estiver assinado com Nome Forte, não há necessidade de considerar problemas de versão.