我已经对这个问题做过一些研究,并且已经看到了一些可能的解决方案,但没有任何对我有用的。
无法加载文件或程序集“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条目,已经验证为什么我在我的计算机上取得了成功而不是某些其他人,而不是我知道为什么它不会使用在执行目录。所有GAC条目都是版本1.0.66.0,具有相同的公钥令牌,并分别与MSIL,x86和AMD64相关联。从GAC中删除文件允许我重现错误,直到我将项目引用更改为“copy local”,此时它再次在我的计算机上运行(并且仍然不在其他计算机上)。
不确定这有多聪明,但我决定尝试动态加载dll(同时仍在我的项目中使用引用),检查我是在32位还是64位环境中运行,并使用程序集.LoadFrom加载SQLite dll以获取正确的位。该代码成功执行并在我的64位机器上运行32位版本,我认为这是因为x86编译平台。无论如何,它没有改变我在其他机器上看到的错误。
有关如何解决此问题的建议?
已修改:在从GAC中删除引用后反映结果
答案 0 :(得分:1)
过去我遇到过同样的问题。我构建版本:一个引用System.Data.SQLite x32和另一个x64。