2022/03/20:
介于客户端的.Net Framework版本较低,我将项目.Net Framework版本也统一降低到了4.5版本,于是便出现了因.Net Framework版本不一致而引发的许多项目引用出现问题,其中之一便是SQLite版本引用的问题。
问题描述
.Net Framework降版本后,找到了4.5版本对应的SQLite版本1.0.115.5,进行安装后并在项目中重新添加了引用,在进行调试的时候报异常:
未能加载文件或程序集“System.Data.SQLite, Version=1.0.115.5, Culture=neutral, PublicKeyToken=db937bc2d44ff139”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
原因分析:
毫无疑问就是项目引用中的SQLite的某个dll文件版本号错误导致的问题,需找出具体是哪个dll文件替换成1.0.115.5版本。
解决方案:
进行逐步排查,首先按照网上的办法:
①查看引用项目的webconfig配置文件里的程序集版本,若有误则修改版本号即可。
(为什么大部分的解决方法都是查看SQLite程序集修改版本号…反正在我这是不起作用)
由于我是直接在NuGet包中进行下载之后进行引用,所以无需手动在webconfig配置文件中添加程序集,直接在NuGet包管理中查看到对应的程序集版本:如下图所示版本号无误。
毫无意义…版本号正确但依旧报错找到的程序集清单定义与程序集引用不匹配。
②既然捕获的异常中无法显示是哪个文件的版本出现了问题,简单粗暴直接将捕获异常的try-catch注释掉,让它直接报错误后查看异常详细信息日志:
日志: 策略后引用: System.Data.SQLite, Version=1.0.115.5, Culture=neutral, PublicKeyToken=db937bc2d44ff139 日志: 尝试下载新的 URL file://D:/......./System.Data.SQLite.DLL。 警告: 比较程序集名称时发生不匹配: 修订号 错误: 未能完成程序集的安装(hr = 0x80131040)。探测终止。
从上面看到错误的原因是某个路径下的SQLite.dll文件有问题,找到路径中的dll文件并查看其版本是否正确,果然这个dll文件的版本号是旧版本的对不上.Net Framework4.5版本的…
于是在已安装的1.0.115.5版本的SQLite的bin文件中将System.Data.SQLite.dll直接拷到报错的路径下替换掉旧版本。
启动调试——项目成功运行。
由于降版本后,调试项目中引用的程序集只报了这一个错误,所以暂时只替换了这一个旧版本的dll,项目路径下还有其他的SQLite.dll是旧版本的未报错(2022.03.15疑惑…)
以上仅为本人(初学程序员)接触的项目的解决办法,若有言误望大佬们指点。
首次写文,转载请注明原文链接…



