栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.Net Framework降版本问题记录

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.Net Framework降版本问题记录

[最终解决]未能加载文件或程序集“System.Data.SQLite, Version=1.0.115.5, …”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

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疑惑…)

所以.NET Framework降版本会引发许多奇奇怪怪的问题,如这次的问题是原先引用的SQLite.dll文件版本未替换成对应的版本引发的。

以上仅为本人(初学程序员)接触的项目的解决办法,若有言误望大佬们指点。
首次写文,转载请注明原文链接…

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/904274.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号