我在Visual Studio 2017中的Web项目中遇到以下错误:
无法加载DLL'SQLite.Interop.dll':指定的模块可能 找不到。 (来自HRESULT的异常:0x8007007E)
现在,我已阅读其他标题相同或相似的StackOverflow问题的全部,并且上述解决方案的无对我有用。
最奇怪的是, SQLite.Interop.dll 文件位于我的\ bin文件夹中,同时位于x86和x64中。
启用了融合日志,但似乎根本无法解决问题。
它对我“感觉”就像我的IIS正在缓存某些内容。
以下是有关我的环境和我在做什么的更多详细信息:
Configuration.BuildSessionFactory()
此外,我有一个基本项目,在该项目中它确实起作用。
我将其转换为Visual Studio模板,将其导出,然后创建一个自定义Visual Studio模板类型的新项目。
是这个新创建的项目,不希望工作。实际上,当我第一次运行时,Visual Studio会下载所有nuget程序包,但不会复制sqlite.interop.dll文件。
仅当我第二次重新构建解决方案时,它才会复制文件。
但是我仍然会收到错误消息。
所以我想强调一点,实际的dll(SQLite.Interop.dll)确实存在于bin目录中,而IIS网站则位于该目录中。
但是我仍然收到此错误。
有什么原因吗?
我觉得它可能与Visual Studio模板有关,但是我看不到手动创建的项目和模板创建的项目有什么区别。但是我认为这不是重点,为什么我会收到错误消息?
感谢您的帮助。
答案 0 :(得分:0)
尝试在Entity Framework设计器edmx文件中工作时,也有一段时间出现此错误。
我终于从SQLite FAQ中找到了解决方案 https://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki#q10
(11)为什么我得到DllNotFoundException(对于“ sqlite3.dll”还是 尝试运行我的应用程序时显示“ SQLite.Interop.dll”?
找不到指定的动态链接库(DLL)或 由于缺少依赖项而无法加载。确保命名 动态链接库位于应用程序目录或 路径,然后重试。另外,请确保 除非已安装必要的Visual C ++运行时可再发行组件,否则 您正在使用静态链接构建的动态链接库
因此,我只是将SQLite.Interop.dll复制到PATH变量引用的位置(我很懒,所以我只是将其放置在C:\ Windows中)。我不必为项目手动选择x86或x64,它仍然使用Any CPU,现在一切正常。