如何创建一个单一的.exe文件与所有的外部.dll嵌入在里面
本文关键字:外部 dll 在里面 文件 exe 何创建 创建 一个 单一 | 更新日期: 2023-09-27 18:05:11
我已经完成了模仿桌面小部件行为的Windows桌面应用程序。这个伪小部件将包含一个内置的浏览器窗口,使用Chrome页面渲染引擎。这就是为什么我使用WebKit . net和它附带的所有。dll的原因。
根据本教程,我已经做了我的内置web浏览器。另外,我把所有WebKit .dll都放到了输出文件夹中。
为了使它更容易使用,我想创建一个单一的。exe文件没有任何。dll。我发现ILMerge是它的工具。
我尝试了很多命令,比如:"ILMerge.exe/target:Bingo.exe CFLite.dll icudt40.dll icudt40.dll icuuc40.dll JavaScriptCore.dll libcurl.dll libxml2.dll libxml2.dll libxml2.dll insert2.dll libxslt.dll objc.dll pthreadVC2.dll SQLite3.dll ssleay32.dll WebKit.dll WebKit.Interop.dll WebKitBrowser.dll/out:BingoFinal.exe"
ILMerge.exe Bingo.exe/out:BingoFinal.exe
这篇文章中提到的所有内容
所有这些尝试给我带来了这样的信息:
- 无法从位置'C:'Program Files (x86)加载程序集微软' ' ILMerge ' Bingo.exe"。跳过并处理剩下的参数。(Stackoverflow刺)
PS我不想用科斯图拉。因为它使用。net 4.6我想我已经尝试了ILMerge命令的所有变体,但它仍然不起作用。
这是我要合并到一个文件中的所有文件的文件夹
谢谢。
ILMerge只能合并托管程序集。
在您的情况下,您的许多依赖项是本机dll(小写的通常是),并且ILMerge无法处理这些。
合并托管的可能会工作,但这不太可能满足您的需要,因为您仍然需要在运行时将非托管的放在exe旁边。
Costura。Fody是正确的方式,因为它支持非托管/本机程序集。