Xamarin.Forms PCL assemly issue



我正在使用这个sqlite-pcl包使用Xamarin.Forms开发一个多平台PCL应用,如本示例所示。

警告PCL 库的 nuget 站点在左侧包含一个错误的链接,当您转到Project Site- 它指向 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条款,但最终,我似乎到达了那里。

但是,我坚持最后一点:我需要在这个特定的库中使用特定于平台的程序集创建数据库连接 - 但我找不到此处建议的方法中的代码(上一篇文章(。但是我无法弄清楚应该将哪些代码进入每个操作系统的依赖项接口(SQLite.Net.Platform该包中似乎不存在(。

总而言之,SQLite-PCL 包非常令人困惑 - 我认为社区将从它们的明确区分中受益......!

安装 sqlite-net-pcl 版本 1.3.3(以前的版本不是当前版本(

当前版本 1.4.118.0 有此问题

不同的 PCL 版本之间似乎有很多混淆......

我设法让它在教程中工作。

要记住的关键点:

  1. 为所有项目安装 SQLite.NET.Async-PCL v3.1.1(一次通过管理解决方案的 NuGet 包(,

  2. 为所有项目安装 SQLite.NET-PCL v3.1.1(必须通过 NuGet 控制台单独安装( - 注意:确保它为正确的项目安装(如果没有,它会抱怨包已经存在(,

  3. 对于UWP
  4. ,还需要添加UWP的Visual Studio扩展,并通过References->Add手动添加对它的引用。

所以所有这些,它终于奏效了 - 所以不匹配是在 1. 和 2 的包之间。(更新 1. 意味着也应该更新 2 中的单个包。...

希望这将帮助任何在 SQlite 包之间感到困惑的人(并且,请参阅有问题的警告 - 指向 NuGet 库页面上的项目页面的链接不正确!!(

在 Github 上将此作为问题提交

应该在 1.5.166 测试版中解决

修复了当我遇到与"sqlite-net-pcl -Version 1.4.118"相同的问题时,由于.net v4.5 无法降级

升级到测试版sqlite-net-pcl -Version 1.5.166-beta,它可以工作。

最新更新