使用ILMerge后找不到DLL

时间:2012-04-12 21:29:27

标签: c# .net unmanaged managed ilmerge

在用SQLite对我的头部进行了多次调整后,我在一些机器上引发了havok,我偶然发现了一个“Managed Only”版本的库。 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'

我可以轻松解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这是我所知道的唯一完全托管的sqlite3库。

http://code.google.com/p/csharp-sqlite/