我只是按照
的说明进行操作SQLite-on-Visual-Studio-with-NuGet-and-Easy-Instructions
我可以用
编译样本C#appliation“any cpu”
选项。
但是当我运行应用程序时,如果我选择
“更喜欢32位”
选项,我的应用程序崩溃:
“无法加载DLL”SQLite.Interop.dll“
如果我取消选中“prefer 32 bit”选项,它在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.UnsafeNativeMethods.sqlite3_config_none(SQLiteConfigOpsEnum op) 在System.Data.SQLite.SQLite3.StaticIsInitialized() 在System.Data.SQLite.SQLiteLog.Initialize() 在System.Data.SQLite.SQLiteFactory..cctor() ---内部异常堆栈跟踪结束--- 在System.Data.SQLite.SQLiteFactory..ctor()
PS 3:
我注意到一件有趣的事情。虽然在视觉工作室它崩溃, 当我运行我的程序exe时,只需单击它就可以了。
答案 0 :(得分:3)
以管理员身份运行命令提示符。 cd
使用x64 .dll进入目录。然后输入:gacutil -i SQLite.Interop.dll
。然后cd
到x86 .dll的目录。再次输入:gacutil -i SQLite.Interop.dll
。现在它应该正常工作。
这样做是将每个程序集安装到系统上的GAC(全局程序集缓存)中。它根据编译方式(x86或x64)将它们放入正确的系统缓存目录中。这只应用于调试目的。
对于客户端计算机。为x86和x64进行部署。当然,为每个.dll投入适当版本的.dll。