sqlite3的System.DllNotFoundException

问题描述 投票:1回答:1

我已经安装了版本1,1,1的Microsoft.Data.Sqlite Nuget包(因为我有视觉工作室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()

我的手机是运行15254.1的lumia 640

.net sqlite uwp
1个回答
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引擎而不是系统安装的引擎。

© www.soinside.com 2019 - 2024. All rights reserved.