Xamarin连接SQLite出现TypeLoadException报错该如何解决
问题修复方案
报错信息
System.TypeLoadException: 'Could not resolve type with token 01000150 from typeref (expected class 'SQLite.CreateTableResult' in assembly 'SQLite-net, Version=1.7.335.0, Culture=neutral, PublicKeyToken=null')'
问题涉及代码
this.db = new SQLiteAsyncConnection(dbPath, storeDateTimeAsTicks: true); this.db.CreateTableAsync<User>().Wait();
修复方案
- 统一全项目SQLite-net包版本:确保解决方案下的共享项目、Android项目、iOS项目安装的
sqlite-net-pcl包版本完全一致,跨项目版本不一致是该类加载错误的最常见诱因。 - 清理编译缓存:关闭IDE后删除所有项目的
bin、obj文件夹,重新打开解决方案执行清理、重建操作,消除旧版本编译残留。 - 调整异步调用写法:避免在主线程用
.Wait()同步阻塞等待异步方法,改为在异步方法中用await调用,避免线程死锁引发的异常加载问题:// 调整为异步调用写法 await this.db.CreateTableAsync<User>(); - 移除第三方SQLite封装依赖:如果项目中引用了第三方二次封装的SQLite工具包,直接改用官方原生
sqlite-net-pcl包即可,多数第三方封装未适配1.7.x版本新增的CreateTableResult类,会触发类型找不到报错。 - 降级SQLite版本:如果上述方案都无效,直接将所有项目的
sqlite-net-pcl包降级到1.6.292稳定版,1.7.x版本在部分旧Xamarin环境下存在兼容缺陷,降级后即可解决该问题。
内容的提问来源于stack exchange,提问作者Piyush
相关产品推荐
相关产品推荐

