1

我已经对这个问题进行了一些研究,并看到了一些可能的解决方案,但没有什么对我有用。

无法加载文件或程序集“System.Data.SQLite.dll”或其依赖项之一。指定的模块无法找到。

我有一个使用 SQLite 的 WPF 应用程序。在我的开发机器(Windows 7、64 位、Visual Studio 2010)上,一切正常。在 QA 部门,一切正常。但是在构建机器(Windows Server 2008,64 位)和客户服务(32 位)上,它给出了错误。

我的 .sln 包含 3 个项目 - 两个 .exe 和一个 lib(由两个 .exe 项目使用并包含 SQLite 逻辑)。这 3 个都有 2 个配置,Debug 和 Release,每个版本都编译为 x86。SQLite dll 位于执行目录中。

我的 GAC 中有 3 个 System.Data.SQLite 条目,这已被验证为为什么我在我的计算机上取得了成功但不是某些其他的,而不是我知道为什么它不会使用在执行目录中找到的 dll . 所有 GAC 条目都是 1.0.66.0 版本,具有相同的公钥令牌,并分别与 MSIL、x86 和 AMD64 相关联。从 GAC 中删除文件允许我重现错误,直到我将项目引用更改为“复制本地”,此时它再次在我的计算机上工作(但仍然不能在其他计算机上工作)。

不确定这有多聪明,但我决定尝试动态加载 dll(同时仍在我的项目中使用引用),检查我是在 32 位还是 64 位环境中运行,并使用 Assembly.LoadFrom 来为正确的位加载 SQLite dll。该代码成功执行并适用于我的 64 位机器上的 32 位版本,我认为这是因为 x86 编译平台。无论如何,它并没有改变我在其他机器上看到的错误。

关于如何解决此问题的建议?

已编辑:从 GAC 中删除引用后反映结果

4

1 回答 1

1

我过去也有同样的问题。我构建版本:一个引用 System.Data.SQLite x32,另一个引用 x64。

于 2012-10-25T21:55:49.327 回答