无法在Mobile上运行的通用Windows应用程序中加载DLL sqlite3

Sta*_*tam 15 sqlite sqlite-net uwp

我正在开发一个UWP.我正在使用sqlite-net-pcl库.将我的应用程序从RC升级到RTM后,我收到运行时错误 - 无法找到sqlite3.dll - 如果它在Mobile模拟器或设备上运行.在我添加了对C++ 2013 Runtime Package的引用并在Local Machine中运行它之后,它完美地工作了.

例外消息:

消息"'SQLitePCL.raw'的类型初始化程序引发了异常." 串

innerexception消息:

{"无法加载DLL的sqlite3":找不到指定的模块.(HRESULT异常:0x8007007E)"} System.Exception {System.DllNotFoundException}

当然我无法添加对"Sqlite for Universal App Platform"的引用,因为我发现了以下错误

严重性代码说明项目文件行错误有效负载包含两个或多个具有相同目标路径"sqlite3.dll"的文件.源文件:C:\ Program Files(x86)\ Microsoft SDKs\UAP\v0.8.0.0\ExtensionSDKs\SQLite.UAP.2015\3.8.11.1\Redist\Debug\ARM\sqlite3.dll C:\ Users\sMavrikis .nu​​get\packages\SQLitePCL.raw_basic\0.7.1\build \native\sqlite3_dynamic\winrt81\arm\sqlite3.dll TestApp1

ift*_*taj 33

添加对"SQLite for Universal App Platform"的引用这将触发错误:

Payload包含两个或多个具有相同目标路径'sqlite3.dll'的文件.

发生此错误的原因是错误标记的位置中的sqlite3.dll版本不同.只需复制即可解决此错误

C:\ Program Files(x86)\ Microsoft SDKs\UAP\v0.8.0.0\ExtensionSDKs\SQLite.UAP.2015\3.8.11.1\Redist\Debug\ARM\sqlite3.dll

C:\用户\%USERNAME%\的NuGet \包\ SQLitePCL.raw_basic\0.7.1 \编译\本地\ sqlite3_dynamic\winrt81\ARM\sqlite3.dll

覆盖现有文件.

重建您的项目.它现在应该编译.

  • 谢谢.这对我有帮助.我有不同的方式.它可以在错误消息中看到. (2认同)

小智 9

如果你看一下两个相互冲突的位置,一个似乎来自一个更正式的微软UWP扩展,而第二个来自一个nuGet包.

当我遇到这个错误时,我需要nuGet包的功能,所以我决定保留它并删除其他引用.我右键单击解决方案资源管理器中的项目并转到Add-> Reference,然后取消选中对SQLite的引用.看起来比将文件从一个位置复制到另一个位置更容易出错.

在此输入图像描述