7

我只是按照说明进行操作

SQLite-on-Visual-Studio-with-NuGet-and-Easy-Instructions

我可以编译示例 C# 应用程序

“任何 CPU”

选项。

但是当我运行应用程序时,如果我选择

“更喜欢 32 位”

选项,我的应用程序崩溃:

“无法加载 DLL “SQLite.Interop.dll”

如果我取消选中“首选 32 位”选项,它在我的 64 位机器上运行良好。

为什么会发生这种情况?有什么建议可以解决吗?

PS:我使用 64 位 Windows 8。我为 SQLite 提供 [x86] 和 [x64] 文件夹。

PS 1: 错误:

System.TypeInitializationException:“System.Data.SQLite.SQLiteFactory”的类型初始化程序引发异常。---> System.DllNotFoundException:无法加载 DLL 'SQLite.Interop.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)在 System.Data.SQLite.SQLite3.StaticIsInitialized() 在 System.Data.SQLite.SQLiteLog.Initialize() 在 System.Data.SQLite.SQLite3_config_none(SQLiteConfigOpsEnum op) 在 System.Data。 SQLite.SQLiteFactory..cctor() --- 内部异常堆栈跟踪结束 --- 在 System.Data.SQLite.SQLiteFactory..ctor()

PS 3:

我注意到一件有趣的事情。虽然在视觉工作室它会崩溃,但当我运行我的程序 exe 时,只需单击它,它就可以工作。

4

1 回答 1

3

以管理员身份运行命令提示符。 cd使用您的 x64 .dll 进入目录。然后键入:gacutil -i SQLite.Interop.dll。然后cd到带有 x86 .dll 的目录。再次输入:gacutil -i SQLite.Interop.dll。现在它应该可以正常工作了。

这样做是将每个程序集安装到系统上的 GAC(全局程序集缓存)中。它根据编译方式(x86 或 x64)将它们放入正确的系统缓存目录中。这应该只用于调试目的。

广汽 32 位与 64 位

对于客户端计算机。分别为 x86 和 x64 进行部署。当然,为每个输入正确版本的 .dll。

于 2013-07-24T14:25:22.180 回答