Windows Phone旧应用加载sqlite3.dll失败求助(Visual Studio 2015)
解决Windows Phone旧版项目中sqlite3.dll加载失败的问题
我之前帮朋友处理过VS2015下Windows Phone旧项目的SQLite加载问题,针对你遇到的“无法加载DLL 'sqlite3'”错误,给你几个针对性的方案:
确保使用适配WP旧版的SQLite版本
你尝试的sqlite-winrt-3220000.vsix是针对UWP或更高版本的,旧版WP(WP8/WP8.1)项目根本用不了。建议通过NuGet安装专门适配的包:在VS2015的NuGet包管理器中搜索SQLite.Net-PCL,选择支持Windows Phone 8的旧版本(比如v3.1.1)安装,它会自动帮你配置好对应平台的dll和引用。手动放置dll时注意平台匹配
如果你坚持手动放dll,别只扔到Bin/Debug根目录——WP项目分x86(模拟器)、ARM(真机)、x64三种平台,你需要把对应平台的sqlite3.dll分别放到项目的x86\Debug、ARM\Debug、x64\Debug文件夹中。然后在VS里选中每个dll,右键设置属性:- 复制到输出目录:始终复制
- 生成操作:内容
手动修改项目文件修复引用问题
有时候VS的引用配置会出问题,你可以右键项目→卸载项目,然后编辑.csproj文件,添加以下配置(根据你的平台调整路径):<ItemGroup> <Content Include="x86\Debug\sqlite3.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <Link>x86\sqlite3.dll</Link> </Content> <Content Include="ARM\Debug\sqlite3.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <Link>ARM\sqlite3.dll</Link> </Content> </ItemGroup>保存后重新加载项目,再重新生成。
彻底清理缓存后重建
别只用VS自带的“清理解决方案”,手动删除项目下的Bin和Obj文件夹,然后重启VS,再重新生成整个解决方案。旧版VS的缓存经常会导致dll复制不完整的问题。
如果还是不行,检查一下你调试的目标平台(模拟器是x86,真机是ARM)和你放置的dll平台是否完全匹配,很多时候都是平台不对应导致的加载失败。
内容的提问来源于stack exchange,提问作者Arsal




