为什么在将 SQLite Nuget 包添加到 LINQPad 时出现 DllNotFoundException?
Why am I getting DllNotFoundException when adding SQLite Nuget Package to LINQPad?
我已将 System.Data.SQLite.Core
NuGet 包添加到我的 LINQPad 5 查询(高级版),然后尝试执行以下操作:
new SQLiteConnection(":memory:").Dump();
但我得到:
DllNotFoundException: Unable to load DLL 'SQLite.Interop.dll': The
specified module could not be found. (Exception from HRESULT:
0x8007007E)
如何告诉 LINQPad 在哪里可以找到 SQLite 本机 DLL?
请注意我不想使用 IQ 驱动程序。
此库未以标准方式引用,因为它是本机的并且需要针对 X86 和 X64 的不同映像。
LINQPad 中的解决方法是找到以下文件夹:
%localappdata%\LINQPad\NuGet.FW46\System.Data.SQLite.Core\System.Data.SQLite.Core.1.0.99.0\build\net46
并将X86和X64子文件夹复制到LINQPad.exe所在的文件夹中。
基于this comment in the LINQPad forum的另一种解决方案是执行以下操作:
- 复制 System.Data.SQLite.dll 文件(可能还有相应的 System.Data.SQLite.xml 文件)某处,例如在与 LINQPad 查询文件相同的目录中。
- 复制 x64 和 x86 子目录,例如从目录 C:\Users\your-user-name-goes-here\AppData\Local\LINQPad\NuGet.FW46\System.Data.SQLite\System.Data.SQLite.Core.1.0.103\build\net46, 到您在步骤 [1] 中复制文件的同一目录。
将以下代码添加到您的 LINQPad 查询中:
System.Environment.SetEnvironmentVariable(
"PreLoadSQLite_BaseDirectory",
@"C:\path\to\which\you\copied\the\files\and\directories\in\steps\one\and\two");
与 Joe Albahari(顺便提一下,LINQPad 的创建者!)提交的答案相比,此方法的优势在于,它可以很容易地包含在 Git 存储库中(如果您要存储因此,您的 LINQPad 查询)。
我已将 System.Data.SQLite.Core
NuGet 包添加到我的 LINQPad 5 查询(高级版),然后尝试执行以下操作:
new SQLiteConnection(":memory:").Dump();
但我得到:
DllNotFoundException: Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
如何告诉 LINQPad 在哪里可以找到 SQLite 本机 DLL?
请注意我不想使用 IQ 驱动程序。
此库未以标准方式引用,因为它是本机的并且需要针对 X86 和 X64 的不同映像。
LINQPad 中的解决方法是找到以下文件夹:
%localappdata%\LINQPad\NuGet.FW46\System.Data.SQLite.Core\System.Data.SQLite.Core.1.0.99.0\build\net46
并将X86和X64子文件夹复制到LINQPad.exe所在的文件夹中。
基于this comment in the LINQPad forum的另一种解决方案是执行以下操作:
- 复制 System.Data.SQLite.dll 文件(可能还有相应的 System.Data.SQLite.xml 文件)某处,例如在与 LINQPad 查询文件相同的目录中。
- 复制 x64 和 x86 子目录,例如从目录 C:\Users\your-user-name-goes-here\AppData\Local\LINQPad\NuGet.FW46\System.Data.SQLite\System.Data.SQLite.Core.1.0.103\build\net46, 到您在步骤 [1] 中复制文件的同一目录。
将以下代码添加到您的 LINQPad 查询中:
System.Environment.SetEnvironmentVariable( "PreLoadSQLite_BaseDirectory", @"C:\path\to\which\you\copied\the\files\and\directories\in\steps\one\and\two");
与 Joe Albahari(顺便提一下,LINQPad 的创建者!)提交的答案相比,此方法的优势在于,它可以很容易地包含在 Git 存储库中(如果您要存储因此,您的 LINQPad 查询)。