我正在使用this sqlite-pcl package开发一个带有Xamarin.Forms的多平台PCL应用程序,如展示in this sample。
警告
当您转到Project Site
时,PCL library的nuget网站左侧包含错误的链接 - 它指向SQLite-net网站...所以我甚至都不知道什么是正确的Sqlite-PCL链接...
直到今天早上,当我尝试安装其他软件包时,它工作得很好(请注意,我最初没有触摸过sqlite软件包)。突然之间,我的应用程序在第一次访问数据库时崩溃了
System.IO.FileLoadException:'无法加载文件或程序集 ' SQLite-net,Version = 1.4.118.0,Culture = neutral,PublicKeyToken = null'。 定位的程序集的清单定义与程序集不匹配 参考。 (HRESULT异常:0x80131040)
好吧,好吧,我开始搜索论坛,试图找到哪个部分可能是问题的根源 - 没有任何帮助 - 卸载并重新安装软件包,重新启动,手动删除我找到的所有对该dll的引用并重新编译,重新部署...我实际上卡住了,我试了Fuslogvw
没有成功......我非常绝望 - 有关如何找到问题根源的任何建议吗?
技术细节: - VS社区2017 - 构建配置:调试 - 任何CPU - UWP的语言环境加工 - 还有其他相关数据吗?
好的,经过几个小时的海运后,感谢@ yuri-s,我重新安装了SQLite.Net.Async-PCL
包裹。我不得不更新一些using
条款,但最终,我似乎到了那里。
但是,最后一点我很困惑:我需要在这个特定的库中使用特定于平台的程序集创建数据库连接 - 但是我无法找到方法中建议的代码here (上一篇文章)但我无法弄清楚应该在每个操作系统的依赖关系界面中插入什么代码(SQLite.Net.Platform
似乎不存在于该包中。)
总而言之,SQLite-PCL软件包非常令人困惑 - 我认为社区将从它们的明确区别中受益......!
答案 0 :(得分:4)
安装sqlite-net-pcl版本1.3.3 (以前版本不是最新版本)
当前版本1.4.118.0存在此问题
答案 1 :(得分:2)
不同的PCL版本之间似乎存在很多混淆......
我设法让它运转following tutorial。
要记住的要点:
为所有项目安装SQLite.NET.Async-PCL v3.1.1(一次通过管理NuGet包进行解决方案),
为所有项目安装SQLite.NET-PCL v3.1.1(必须通过NuGet控制台单独执行) - 注意:确保安装正确的项目(如果没有,它会抱怨该软件包已经存在),
对于UWP,还需要添加Visual Studio extension for UWP并通过References->Add
手动添加对它的引用。
所有这一切,它最终起作用 - 所以不匹配是在1和2的包之间。(更新1.暗示一个也应该更新2中的单个包。)...
希望这可以帮助那些在SQlite软件包之间感到困惑的人(并且,请参阅有问题的警告 - 链接到NuGet Library页面上的项目页面是不正确的!)
答案 2 :(得分:2)
将此问题归档为Github
上的问题 中解决答案 3 :(得分:0)
已修复当我遇到与“sqlite-net-pcl -Version 1.4.118”相同的问题时,由于.net v4.5无法降级
已升级到测试版 sqlite-net-pcl -Version 1.5.166-beta 并且有效。