公司部署在客户的一套系统需要新做一个接口,接口用到了第三方DLL,BouncyCastle.Crypto.dll,我目前用的版本是1.9.0.1,等接口写好准备调试时,发现系统的运行目录下已经存在一个相同的DLL BouncyCastle.Crypto.dll,版本是1.8.15362.1,覆盖掉后,老系统有个模块打不开了,在网上找了下各位大神给的办法,解决掉了,总结下:
1.先用命令看下2个DLL的publicKeyToken是否一致
使用vs的Tools Command Prompt命令行工具,输入:SN -T "path",例如
我这个看起来是一致的,就好解决了
以最高版本兼容即可
找到程序目录下主运行程序的exe配置文件 Tandalaorm.exe.config,添加下面这段
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="BouncyCastle.Crypto" publicKeyToken="0e99375e54769942" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.9.0.0" newVersion="1.9.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
运行起来正常,解决
如果2个不一样的话,可以参考下面这位大神的解决办法