版本兼容问题的原因
首先让我们简单了解下程序引用的原理:
当运行库试图解析对另一个程序集的引用时,就开始进行定位并绑定到程序集的进程。详细见:运行库如何定位程序集
步骤如下:
第 1 步:检查配置文件(.config文件)
第 2 步:检查以前引用的程序集
第 3 步:检查全局程序集缓存
第 4 步:通过基本代码或探测定位程序集
解决版本兼容前提简单了解原理以后,常见解决兼容的方法
1. 首先了解你要用那个dll,具体版本是什么,查看版本方法:1)文件夹里dll文件,右键->属性
2)解决方案里引用的dll,右键->属性
方法1、指定特定版本**
利用config的bindingRedirect指向特定版本组件
.config添加节点
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>