c# - SQLite 和 .NET 用户控件

标签 c# .net wpf visual-studio sqlite

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

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

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

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

提前致谢。

编辑:澄清一下,当我在设计器模式下打开用户控件时出现的 DllNotFoundException 会导致 visual studio 崩溃。

最佳答案

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

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

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

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

  5. 重新启动 Visual Studio。

希望这对您有所帮助。

关于c# - SQLite 和 .NET 用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10352134/

相关文章:

c# - 如果只需要进行微小的更改,如何在不复制完整方法的情况下实现重载?

c# - 查找使用 WCF net.tcp 发送消息所花费的时间

c# - log4net错误呈现

.net - Visual Studio 2010 上的通用处理程序 (.ashx) 智能感知问题

c# - 如何填充 GridView 异步

wpf - Windows 8 GUI,和 WPF/SilverLight/WinRT/Metro/BUILD 关系

c# - this.RaisePropertyChanged ("")是什么意思?

c# - 使用 IPv6 地址信任 SSL 证书

c# - 基于接口(interface)的编程,我做对了吗?

.net - 如何将 WebBrowser 显示置于我的控制之下?