如何创建一个单一的.exe文件与所有的外部.dll嵌入在里面

本文关键字:外部 dll 在里面 文件 exe 何创建 创建 一个 单一 | 更新日期: 2023-09-27 18:05:11

我已经完成了模仿桌面小部件行为的Windows桌面应用程序。这个伪小部件将包含一个内置的浏览器窗口,使用Chrome页面渲染引擎。这就是为什么我使用WebKit . net和它附带的所有。dll的原因。

根据本教程,我已经做了我的内置web浏览器。另外,我把所有WebKit .dll都放到了输出文件夹中。

为了使它更容易使用,我想创建一个单一的。exe文件没有任何。dll。我发现ILMerge是它的工具。

我尝试了很多命令,比如:
  1. "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"

  2. ILMerge.exe Bingo.exe/out:BingoFinal.exe

  3. 这篇文章中提到的所有内容

所有这些尝试给我带来了这样的信息:

  • 无法从位置'C:'Program Files (x86)加载程序集微软' ' ILMerge ' Bingo.exe"。跳过并处理剩下的参数。(Stackoverflow刺)

PS我不想用科斯图拉。因为它使用。net 4.6我想我已经尝试了ILMerge命令的所有变体,但它仍然不起作用。

这是我要合并到一个文件中的所有文件的文件夹

谢谢。

如何创建一个单一的.exe文件与所有的外部.dll嵌入在里面

ILMerge只能合并托管程序集。

在您的情况下,您的许多依赖项是本机dll(小写的通常是),并且ILMerge无法处理这些。

合并托管的可能会工作,但这不太可能满足您的需要,因为您仍然需要在运行时将非托管的放在exe旁边。

Costura。Fody是正确的方式,因为它支持非托管/本机程序集。