3

我决定将 SQLite 用于一个小项目。但是,我遇到了一个问题。SQLite 带有 2 个不同的 .dll 文件。我添加了其中一个作为参考。另一个不能作为参考添加,因为它“不是有效的程序集或 COM 组件”。不过这并不重要,因为它只需要在第一个 .dll(已添加为参考的那个)可以找到它的文件夹中。所以很自然地我将它复制到构建目录,它工作正常,直到我开始使用 UserControls。

我的用户控件包含通过视图模型到数据库项目的数据绑定。如果我理解正确,要在设计器中显示用户控件,它们的构建就像我运行程序一样。问题是当它们在设计器中构建时,也会创建数据绑定,因此会执行一些小型数据库查询。但是,当为设计器构建用户控件并尝试执行这些查询时,我从第一个 .dll(包括的那个)中得到一个 dllnotfoundexception。它找不到第二个。

我认为将第二个 .dll 添加到 GAC 会帮助第一个找到它,但似乎我不能,因为根据 gacutil “该模块应包含程序集清单”。

有什么好的方法可以解决这个问题吗?我只是愚蠢,忽略了一些明显的事情吗?我试图尽可能清楚地描述问题,如果有不清楚的地方,请询问。

提前致谢。

编辑:澄清一下,当我在设计器模式下打开用户控件时得到的 DllNotFoundException 会导致 Visual Studio 崩溃。

4

3 回答 3

1

您可能希望将 sqlite dll 复制到以下位置之一,具体取决于您使用的 VS.NET 版本...

找到设计器装配探针位置的一种方法是

  1. 找到 devenv.exe 文件。
  2. 在记事本中打开 devenv.exe.config 文件
  3. 在其中寻找条目

     <probing privatePath="PublicAssemblies;PrivateAssemblies"/>
    
  4. 将这些 sqlite dll 复制到这些目录之一。

  5. 重新启动视觉工作室。

希望这可以帮助。

于 2012-04-27T14:27:09.813 回答
1

使用 NuGet 包管理器并安装 SQLite

http://nuget.org/

http://nuget.org/packages/System.Data.SQLite

顺便提一句。还有一个 x64 版本的 SQLite

于 2012-04-27T14:38:55.507 回答
0

您没有向我们提供所涉及的 SQLite 文件的任何详细信息,因此以下是我的最佳猜测:

很可能您有一个 .NET dll,它是 SQLite 的 ADO.NET 数据提供程序,另一个可能是非 .NET dll,它是 SQLite 本身。您只需要将它与 ADO.NET 数据提供程序 dll 放在同一个地方

于 2012-04-27T14:10:39.197 回答