某个项目中使用了一个工具集库Toolkit.dll,这个工具集库中封装的数据库访问部分引用了其它数据库组件,比如SQLite的访问组件库System.Data.SQLite。由于在Toolkit.dll生成的时候System.Data.SQLite的最新版本是1.0.82.0,而现在要使用的System.Data.SQLite是1.0.90.0,结果在换了System.Data.SQLite.dll之后,报告了一个错误:
之后在Google上查找解决办法,找到有两个解决办法,一个是通过代码载入DLL,另一个是在App.Config中添加一个重定向程序集版本(Redirecting Assembly Versions)的配置。用代码载入DLL太麻烦,还是改配置文件简单些,需要加入配置内容如下:
1
2
3
4
5
6
7
8
9
10
|
<
configuration
>
<
runtime
>
<
assemblyBinding
xmlns
=
"urn:schemas-microsoft-com:asm.v1"
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"System.Data.SQLite"
publicKeyToken
=
"db937bc2d44ff139"
/>
<
bindingRedirect
oldVersion
=
"1.0.82.0"
newVersion
=
"1.0.90.0"
/>
</
dependentAssembly
>
</
assemblyBinding
>
</
runtime
>
</
configuration
>
|
其中publicKeyToken是从报告的错误中抄的。另外,如果oldVersion不确定的情况下,也可以配置成一个范围,比如:
1
|
<
bindingRedirect
oldVersion
=
"1.0.0.0-2.0.0.0"
newVersion
=
"1.0.90.0"
/>
|
需要注意的是,在干这个事情之前最好确认新版本的引用库不会造成新的问题,否则还是引用旧库比较稳当。
本文转自边城__ 51CTO博客,原文链接:http://blog.51cto.com/jamesfancy/1358594,如需转载请自行联系原作者