我已经完成了我的Windows桌面应用程序,它模仿了桌面小部件的行为。这个伪小部件将在其中包含一个使用Chrome页面呈现引擎的浏览器窗口中的内置版本。这就是为什么我使用WebKit .NET及其随附的所有.dll的原因。
根据这个tutorial,我制作了内置的网络浏览器。另外,我把所有WebKit .dll都放在输出文件夹中。
为了更容易使用,我想创建一个没有任何.dll的.exe文件。 我发现ILMerge是它的工具。
我尝试了很多命令,如:
“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“
ILMerge.exe Bingo.exe /out:BingoFinal.exe
所有这些尝试都给我带来了这样的信息:
PS 我不想使用Costura.Fody,因为它使用的是.NET 4.6 我想我已经尝试了ILMerge的Command的所有变体,但它仍然无效。
Here is the folder with all files that I want to merge in to one file.
谢谢。
答案 0 :(得分:1)
ILMerge只能合并托管程序集。
在您的情况下,您的许多依赖项都是本机dll(通常是小写的),ILMerge无法处理这些。
合并托管版本可能会有效,但这不太可能满足您的需求,因为您仍然需要在运行时将不受管理的版本放在您的exe旁边。
Costura.Fody是支持非托管/本机程序集的正确方法。