3

我有一个使用 Sqlite 的用户控件。编译并添加到工具箱后,通过将其拖动到新的表单中,出现如下所述的错误消息:

“无法创建组件'UserControl1'。错误消息跟随'System.DllNotFoundException:'无法加载Dll'Sqlite.Interop.dll':找不到指定的模块。来自HResult的异常:0x8007007E

我用谷歌搜索了这个问题,我仍然无法解决这个问题。但有趣的是,如果我通过引用在表单中对其进行硬编码并创建一个新控件,则用户控件可以正常工作。为什么拖放有这个问题?

还有一个问题:我正在使用 Nuget 安装 sqlite,有 2 个版本:32 位和 64 位:我应该添加哪个作为参考?我正在使用 VS2010 终极版 sp1。Sqlite v 1.0.83.0。将dll编译为任何cpu。

4

2 回答 2

1

如果您为 SQLite 下载了正确的二进制文件,则根据您的项目构建选项将 SQLite.Interop.dll 复制到您的 Release 或 Debug 文件夹中。

于 2014-03-02T07:44:46.927 回答
1

我认为这是一个与 SQLite 不同的问题,更具体地说,是当您尝试从工具箱中拖动用户控件时找不到 DLL。我有同样的问题。我能够通过编程方式添加用户控件Controls.Add(myUserControl),它工作正常,但我无法从工具箱中拖动它。一些搜索使我找到了以下链接,其中包含 Hans Passant 的见解:

https://social.msdn.microsoft.com/Forums/en-US/e6ba24f2-4f2d-42bd-b2f2-1e00744e0052/dllimport-throws-systemdllnotfoundexception-in-usercontrol?forum=netfxbcl

要点是设计器不知道查找 DLL 的路径。作为测试,我在DllImportie中对路径进行了硬编码[DllImport(*full path here*)],并且能够成功地将用户控件从工具箱拖到设计器中。(确保在尝试添加用户控件之前添加完整路径后进行构建!)

在没有任何重大测试的情况下,我似乎能够然后删除完全合格的路径,并且设计师似乎记得在哪里看。我可以从表单中删除用户控件并再次添加它而不会出现问题。但是,一旦我关闭 Visual Studio 并重新打开它,从工具箱中拖放用户控件再次失败。希望这些信息可以帮助某人了解正在发生的事情和/或引导他们朝着正确的方向寻求解决方案。

于 2015-06-24T14:20:23.093 回答