【问题标题】:How to create a single .exe file with all its external .dlls embeded inside?如何创建一个嵌入了所有外部 .dll 的单个 .exe 文件?
【发布时间】:2015-07-29 06:43:50
【问题描述】:

我已经完成了我的 Windows 桌面应用程序的工作,该应用程序模仿了桌面小部件的行为。这个伪小部件将在其中包含一个内置浏览器窗口,该窗口使用 Chrome 页面渲染引擎。这就是我使用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中提到的所有内容

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

  • 无法从位置 'C:\Program Files (x86) 加载程序集 \Microsoft\ILMerge\Bingo.exe'。跳过和处理其余的参数。 (Stackoverflow Thred)

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

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

谢谢。

【问题讨论】:

    标签: c# dll webkit external ilmerge


    【解决方案1】:

    ILMerge 只能合并托管程序集。

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

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

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

    【讨论】:

    • 好的。感谢您的信息。最后我决定使用名为Install Creator 的程序。它部分满足了我的需求。它可以在桌面上创建应用程序图标,还可以隐藏所需文件夹中的所有应用程序文件(tutorial)。
    猜你喜欢
    • 1970-01-01
    • 2017-07-18
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多