macOS Mojave 上的 SQLitePCLRaw:无法加载共享库“e_sqlite3”或其依赖项之一

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

我有一个 C# 跨平台 (Windows + macOS) 应用程序,它使用 EF Core 和 SQLite 来访问应用程序附带的本地数据库。

它可以在所有 Windows 设备和最新版本的 macOS 上完美运行。然而,我的一位用户在他的 macOS Mojave (10.14) 上遇到了问题。应用程序第一次尝试访问数据库(无论操作:读取、写入、迁移等)时,都会引发以下异常:

System.DllNotFoundException:无法加载共享库“e_sqlite3”或其依赖项之一。为了帮助诊断加载问题,请考虑设置 DYLD_PRINT_LIBRARIES 环境变量: dlopen(libe_sqlite3, 1): image not find 在 SQLitePCL.SQLite3Provider_e_sqlite3.NativeMethods.sqlite3_libversion_number() 在 SQLitePCL.SQLite3Provider_e_sqlite3.SQLitePCL.ISQLite3Provider.sqlite3_libversion_number() 在 SQLitePCL.raw.SetProvider(ISQLite3Provider imp) 在 SQLitePCL.Batteries_V2.Init()

这是我的 nuget 包的信息:

我尝试过的:

  • 我尝试用其他包替换 SQLitePCLRaw.bundle nuget 包,但没有成功。我也将捆绑包更新到前几天发布的2.1.6版本,仍然没有成功
  • 我让我的用户在终端中运行命令“sqlite3”,看起来 SQLite3 已正确安装在他的设备上(SQLite 版本 3.24.0)
  • 我尝试在我可以访问的几台 Mac 上重现该错误,但每次都运行正常。请注意,这些Mac都是M1或M2,所以我猜这个问题只出现在旧版本上

我很难弄清楚是什么原因造成的,希望得到任何帮助。

谢谢

c# sqlite entity-framework-core macos-mojave system.data.sqlite
1个回答
0
投票

我遇到了同样的问题,它似乎与 Microsoft.EntityFrameworkCore.SQLite NuGet 包有关。适用于 macOS Mojave (10.14) 的最新版本是 7.0.2,此后的每个版本都不会加载动态库。 不确定是否可以在更高版本中恢复兼容性,但由于 Mojave 已经过时了,我怀疑在新版本中是否会恢复兼容性。因此,如果它确实需要在 Mojave 上运行,您可能必须坚持使用此软件包的 7.0.2 版本。

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