问候比我聪明的人。
发布使用 SQLite 的项目后,当程序的一部分运行以访问 DB 命令时,我收到此错误。
无法加载 DLL 'SQLite.Interop.dll':指定的模块可以 未找到
现在我花了几个小时,浏览了许多类似的线程,尝试了所有建议,看看我是否可以解决这个问题,但是到目前为止我还没有运气。
我已经做了以下工作。
确保 SQLite.Core 包含在主项目和所有子项目区域。
已确保.dll在调试站中可用。
确保正确设置依赖项。
专门发布到 x64 平台。
专门发布到 x86 平台。
禁用"首选 32 位"。
复制了一些对 csproj 的特定引用。
一切都无济于事。如果有人对此有任何经验,谁可能能够提出一些我没有尝试过的新东西来解决这个问题,我将不胜感激。
因此,经过大量研究,我终于找到了解决方案。
此错误似乎有很多潜在原因,但是在这种情况下,这为我解决了问题。
将所有内容恢复到原来的状态,确保在程序集中引用System.Data.SQLite.Core。
关闭 VS/解决方案并在存储库中打开 csproj 文件。将以下内容复制到文件中。
<PropertyGroup>
<ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles>
<CopySQLiteInteropFiles>false</CopySQLiteInteropFiles>
<CleanSQLiteInteropFiles>false</CleanSQLiteInteropFiles>
<CollectSQLiteInteropFiles>false</CollectSQLiteInteropFiles>
</PropertyGroup>
保存文件(可能会事先创建它的副本,以确保如果它不适合您,您可以替换它(。
确保互操作.dll不在存储库中除 bin/debug/x86 和 x64 之外的任何位置。
然后继续测试您的项目,然后发布它。
原因:
由于互操作包含在 nuget 安装中,但未向下复制,因此这段代码可确保在发布期间复制互操作。
谢谢互联网。