使用SQLite-net-pcl遇FileNotFoundException,求解决建议
解决Xamarin.Android中SQLite-net程序集加载失败的问题
针对你在TimeLogger.Android项目中遇到的System.IO.FileNotFoundException错误——找不到SQLite-net.dll的问题,结合你的项目环境(Xamarin.Forms 2.4.0.280 + monoandroid71 + SQLite-net-pcl 1.3.0),可以尝试以下几个解决方案:
1. 彻底清理并重装SQLite-net-pcl包
NuGet包安装偶尔会出现缓存或文件缺失问题,建议按以下步骤操作:
- 在Visual Studio的解决方案资源管理器中,右键你的Android项目 → 管理NuGet程序包,找到
SQLite-net-pcl并卸载。 - 手动删除项目根目录下的
bin和obj文件夹,清空编译缓存。 - 重新打开NuGet包管理器,搜索
SQLite-net-pcl并安装1.3.0版本(也可尝试安装与Xamarin.Forms 2.4.0.280兼容的最新稳定版,比如1.4.x版本,优先用当前版本测试)。 - 也可在包管理器控制台执行命令强制重装:
Update-Package -reinstall SQLite-net-pcl
2. 检查程序集的「复制本地」属性
确保SQLite相关程序集会被复制到编译输出目录:
- 展开Android项目的引用,找到
SQLite-net和SQLite-net-pcl相关程序集。 - 右键程序集 → 属性,将
复制本地设置为True。
3. 移除手动添加的SQLite-net.dll文件
如果你之前手动将SQLite-net.dll添加到项目中,很可能和NuGet包引用产生冲突:
- 删除项目中手动添加的
SQLite-net.dll文件,并从引用中移除它。 - 确保所有SQLite依赖仅通过NuGet管理,NuGet会自动处理跨平台兼容性(包括Mono for Android的适配)。
4. 清理Xamarin全局缓存
Xamarin的缓存文件偶尔会导致程序集解析错误:
- 关闭Visual Studio。
- 打开文件资源管理器,导航到
%LOCALAPPDATA%\Xamarin目录,删除该文件夹下的所有内容。 - 重启Visual Studio,重新编译项目。
5. 验证项目目标框架与包的兼容性
你的项目目标是monoandroid71(对应Android API 25),当前使用的Xamarin.Android.Support包版本25.4.0.2是匹配的,SQLite-net-pcl 1.3.0也支持该API等级,可再确认:
- 右键Android项目 → 属性,在应用程序选项卡中,确认目标Android版本和最低Android版本都设置为API 25或兼容版本。
如果以上步骤都无效,建议创建一个空白Xamarin.Forms项目,仅安装SQLite-net-pcl 1.3.0并测试基础数据库操作,以此排查是否是原项目的配置问题。
内容的提问来源于stack exchange,提问作者mnemonic
相关产品推荐
相关产品推荐

