sqlite3的System.DllNotFoundException

时间:2017-12-19 09:32:15

标签: .net sqlite uwp

我已经安装了版本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

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引擎而不是系统安装的。