SQLite and .NET UserControl

本文关键字:UserControl NET and SQLite | 更新日期: 2023-09-27 18:32:23

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

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

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

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

提前谢谢。

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

SQLite and .NET UserControl

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

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

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

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

  5. 重新启动 Visual Studio。

希望这有帮助。

使用 NuGet 包管理器并安装 SQLite

http://nuget.org/

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

还有一个x64版本的SQLite。

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

很可能你有一个.NET dll,它是SQLite

的 ADO.NET 数据提供程序,另一个可能是非.NET dll,它是SQLite本身。您只需要在与 ADO.NET 数据提供程序 dll 相同的位置使用它