我已经安装了版本1,1,1的Microsoft.Data.Sqlite Nuget包(因为我没有支持visual studio 2015和2.0.0)。在x86和x64中一切正常,但是当我在移动设备上部署应用程序时,问题出现在arm版本中,这会引发以下异常
Microsoft.Data.Sqlite.dll中发生了'System.DllNotFoundException'类型的异常但未在用户代码中处理
其他信息:无法加载DLL的'sqlite3':找不到指定的模块。 (HRESULT异常:0x8007007E)
这是我的堆栈跟踪
at Microsoft.Data.Sqlite.Interop.NativeMethods.Sqlite3_sqlite3.sqlite3_open_v2(IntPtr filename, Sqlite3Handle& ppDb, Int32 flags, IntPtr vfs)
at Microsoft.Data.Sqlite.Interop.NativeMethods.Sqlite3_sqlite3.open_v2(IntPtr filename, Sqlite3Handle& ppDb, Int32 flags, IntPtr vfs)
at Microsoft.Data.Sqlite.Interop.NativeMethods.sqlite3_open_v2(String filename, Sqlite3Handle& ppDb, Int32 flags, String vfs)
at Microsoft.Data.Sqlite.SqliteConnection.Open()
at Microsoft.Data.Sqlite.Interop.NativeMethods.OnLoad()
at Microsoft.Data.Sqlite.Interop.NativeMethods.get_Sqlite3()
at Microsoft.Data.Sqlite.Interop.NativeMethods.sqlite3_open_v2(String filename, Sqlite3Handle& ppDb, Int32 flags, String vfs)
at Microsoft.Data.Sqlite.SqliteConnection.Open()
at MyTodoData.functions..ctor()
at My_Todo.MainPage..ctor()
at My_Todo.My_Todo_XamlTypeInfo.XamlTypeInfoProvider.Activate_0_MainPage()
at My_Todo.My_Todo_XamlTypeInfo.XamlUserType.ActivateInstance()
我的手机是lumia 640,运行15254.1
答案 0 :(得分:2)
使用
行SqliteEngine.UseWinSqlite3();
或
Microsoft.Data.Sqlite.Internal.SqliteEngine.UseWinSqlite3();
已经解决了这个问题。
x86和x64版本内置了sqlite3.dll,但它不存在于ARM设备中。
像Lumia 950或950xl这样的新设备可能有这个包,但像lumia 640这样的旧设备却没有。
根据此Link After Fall创建者更新后,您应该能够使用SQLite而无需任何额外的二进制文件。我的手机有秋天的创建者更新,但项目的目标版本是周年纪念更新。
现在它使用nuget提供的Sqlite引擎而不是系统安装的。