如何将没有托管代码的DLL打包到我的WPF应用程序中?

时间:2015-10-30 15:50:05

标签: c# .net sqlite dll ilmerge

我现在已经使用LibZ Container一段时间将DLL文件与我的可执行文件捆绑在一起,导致只需要复制单个可执行文件而不是安装一堆DLL。 (对于那些不熟悉的LibZ容器,它是IL Merge的替代品,只有它适用于WPF。)

通常情况下这很有效,但今天我了解到SQLite库并没有那么好用。特别是,有一个文件无法打包。这是我收到的错误消息:

  

正在加载'。\ SQLite.Interop.dll'

     

无法从'。\ SQLite.Interop.dll'

加载程序集      

Assembly'。\ SQLite.Interop.dll'无法加载

查看SQLite FAQ page我看到他们说明了这一点:

  

我是否需要将一个程序集引用添加到" sqlite3.dll"或者" SQLite.Interop.dll"在我的项目中?

     

不,因为它们不是托管程序集,也不包含托管代码。

我必须承认我并不确定这意味着什么...直到现在这些东西对我来说大部分都是一个黑盒子,只是有点工作。有没有办法将SQLite.Interop.dll文件与我希望的程序集捆绑在一起?任何人都可以解释为什么LibZ容器特别窒息这个DLL文件吗?

1 个答案:

答案 0 :(得分:0)

长话短说,正如罗恩在评论中所说,这是不可能的。因为两个SQLite.Interop.dll文件是不受管理的,所以它们不能捆绑在可执行文件中。它们必须位于相应的x86和x64文件夹中,位于与可执行文件相同的父目录中。没办法解决这个问题。