在使用 SQLite 在某些机器上造成严重破坏后,我的头好几次了,我偶然发现了该库的“仅限托管”版本。http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.66.0/
我很兴奋并将其放入我的项目文件夹中,所以现在我的项目可以在每个人的计算机上运行,无论架构如何!
事实上,我非常兴奋,以至于我决定再次尝试使用 ILMerge(因为我的所有依赖项现在都得到了管理),而不是必须将 DLL 文件作为资源复制并在检测到它们不存在时将它们写入输出文件夹。
我使用以下命令编译了 EXE:
ilmerge.exe /target:winexe /zeroPeKind /out:"Core View.exe" CoreView.exe System.Data.SQLite.dll OpenHardwareMonitorLib.dll
(该zeroPeKind
标志是必需的,因为尽管 SQLite 是托管的,但它没有被标记为这样,如果zeroPeKind
不存在,则会导致编译错误)
现在的问题是,虽然它启动得很好,但当 DLL 文件不存在时尝试执行任何数据库操作时出现以下错误:
System.DllNotFoundException: Unable to load DLL 'System.Data.SQLite.DLL'
我可以轻松解决这个问题吗?