如何创建一个包含所有外部 .dll 的单个 .exe 文件?

How to create a single .exe file with all its external .dlls embeded inside?

我已经完成了我的 Windows 桌面应用程序的工作,该应用程序模仿了桌面小部件的行为。这个伪小部件将在其内部包含一个使用 Chrome 页面呈现引擎的内置浏览器 window。这就是为什么我使用 WebKit .NET 及其附带的所有 .dll 的原因。

根据这个 tutorial 我制作了我的内置网络浏览器。此外,我将所有 WebKit .dll 都放入了输出文件夹。

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

我尝试了很多命令,例如:

  1. "ILMerge.exe /target:Bingo.exe CFLite.dll icudt40.dll icuin40.dll icuuc40.dll JavaScriptCore.dll libcurl.dll libeay32.dll libexslt.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. 以及本文中提到的所有内容 Thred

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

PS 我不想使用 Costura.Fody 因为它使用 .NET 4.6 我想我已经尝试了 ILMerge 命令的所有变体,但它仍然无法正常工作。

Here is the folder with all files that I want to merge in to one file.

谢谢。

ILMerge 只能合并托管程序集。

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

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

Costura.Fody 是正确的方法,因为它支持 unmanaged/native 程序集。