15

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

异常消息:

消息“'SQLitePCL.raw' 的类型初始化程序引发了异常。” 细绳

内部异常消息:

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

当然,我无法为“通用应用程序平台的 Sqlite”添加参考,因为我收到以下错误

严重性代码描述项目文件行错误有效负载包含两个或多个具有相同目标路径“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

4

7 回答 7

32

添加对“通用应用程序平台的 SQLite”的引用这将触发错误:

有效负载包含两个或多个具有相同目标路径“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:\Users\%USERNAME%\.nuget\packages\SQLitePCL.raw_basic\0.7.1\build\native\sqlite3_dynamic\winrt81\arm\sqlite3.dll

覆盖现有文件。

重建你的项目。它现在应该编译。

于 2015-08-08T17:44:38.440 回答
8

如果您查看两个冲突的位置,一个似乎来自更官方的 UWP 微软扩展,而第二个来自 nuGet 包。

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

在此处输入图像描述

于 2016-06-14T06:01:32.743 回答
2

我收到了同样的错误信息。我开始使用 SQLite-PCL,它还需要 SQLite for Universal App Platform 作为参考。后来我切换到 SQLite.Net-PCL。那是我得到这些错误的时候。在研究解决方案时,我发现了这个页面。它工作了一点。最终,我删除了通用应用程序平台对 SQLite 的引用,错误就消失了。

于 2016-01-29T18:51:35.160 回答
0

右键单击 UWP 项目并选择属性。

并确保解决方案平台目标与项目平台目标相匹配。

如果它们不同,您将收到有关将文件复制到具有相同名称(但目标平台不同)的相同目标的构建错误。

确保匹配目标平台

于 2017-10-08T14:14:43.607 回答
0

我设法通过在 UWP .csproj 中添加条件以包含 SQLite dll 来解决差异

<SDKReference Include="SQLite.UWP.2015, Version=3.19.3" Condition="'$(Configuration)'=='Debug'">
  <Name>SQLite for Universal Windows Platform</Name>
</SDKReference>

我需要使用 UWP 版本进行调试,否则我的 XAMl 设计器会因“找不到 SQLite.dll ...”而崩溃

于 2017-10-27T09:04:17.050 回答
0

我通过在编译器配置中选择 x64 或 arm 解决了类似的问题。

错误有效负载包含两个或多个具有相同目标路径“e_sqlite3.dll”的文件。源文件:C:\Users\xleon.nuget\packages\SQLitePCLRaw.lib.e_sqlite3.v140\1.1.0\runtimes\win10-arm\native\e_sqlite3.dll C:\Users\xleon.nuget\packages\sqlitepclraw。 lib.e_sqlite3.v140\1.1.0\runtimes\win10-x86\native\e_sqlite3.dll

但这当然不允许您运行模拟器

于 2017-03-31T02:36:37.143 回答
0

回复晚了,但现在有问题;对我来说解决的方法是对解决方案中的所有项目进行 Nuget 包更新,因为其中一个包仍在使用旧参考,并且正在运行的项目引用另一个已过时的项目。

于 2016-02-26T10:32:37.563 回答