【问题标题】:Missing System.Data.SQLite.dll reported after installation安装后报告缺少 System.Data.SQLite.dll
【发布时间】:2013-06-15 23:45:51
【问题描述】:

我正在开发的桌面软件(.Net 4.0,在 Visual Studio 2010 下编译,目标:x86)随附 System.Data.SQLite(1.0.86 for x86,来自 system.data.sqlite.org *) 第一次。

在开发机器(以及运行 System.Data.SQLite 安装程序的所有其他机器)上,一切正常。

然而,在测试机器上,在安装(使用 Visual Studio 安装程序创建的标准 MSI 设置)启动应用程序并显示初始屏幕后,在显示 GUI 之前,应用程序会创建一个异常并出现以下错误:

System.IO.FileNotFoundException:无法加载文件或程序集“System.Data.SQLite.dll”或其依赖项之一。

在应用程序目录(正确版本)中可以找到提到的文件本身,以及所有其他引用的 DLL。

由于设置选项“安装图像”,我认为这适用于开发机器。我没有在 GAC 中安装 SQLite。应用程序项目直接引用预构建 System.Data.SQLite.dll 并将 local copy 设置为 true

是否有任何我没有看到的依赖项? 还是缺少 Microsoft Visual C++ 运行时库(应用程序目录中不存在)? 还是缺少SQLite.Interop.DLL(不在应用程序目录中)?

我该如何解决这些问题?

【问题讨论】:

  • 您是否在 appconfig.xml 中指定了 sqlite 提供程序?如果是这样,请确保您拥有正确的程序集强名称。
  • @Gusdor:不,我在代码中使用了 DSN。

标签: visual-studio-2010 sqlite .net-4.0


【解决方案1】:

确保您已安装最新的 Microsoft Visual C++ 2010 Redistributable Package。 http://www.microsoft.com/en-gb/download/details.aspx?id=5555

为什么? sqlite DLL 中嵌入了一些非托管代码,这些代码在运行时直接从程序集运行。这对我来说是一个糟糕的图像格式异常,但你永远不知道!

【讨论】:

  • 我在怀疑类似的事情。现在,我必须找出如何强制用户安装它...
  • 您如何部署应用程序?我使用 installshield 并简单地将可再发行组件添加到先决条件列表中。但是,您可以搜索注册表 stackoverflow.com/questions/12206314/…。 Steam(例如)总是在每个应用程序首次运行时安装。这很烦人,但建议这样做。
猜你喜欢
  • 1970-01-01
  • 2020-01-30
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 2019-03-02
  • 2018-06-28
  • 2018-03-25
  • 1970-01-01
相关资源
最近更新 更多