C# 使用ILMerge将dll文件和exe文件合并为单独exe文件
今天在将 简单播放器 生成时发现,生成包内包含两个dll文件,如果要打开 简单播放器.exe 必须要携带 AxInterop.WMPLib.dll 和 Interop.WMPLib.dll 这两个文件,非常麻烦。于是就想着能不能合并为一个文件,那么就很方便了,于是就在网上找各种方法,但由于我技术有限,看不懂大神们写的代码。。。最后找到了使用ILMerge工具来合并文件。
具体步骤:
1、先到 微软官方 https://www.microsoft.com/en-us/download/details.aspx?id=17630 下载并安装。
2、工具安装完毕后,需使用cmd命令提示符进入该目录使用该工具(使用win键+r键 调出运行,在打开文本框输入cmd,点击确定即可。)。
打开后输入命令:
CD C:\Program Files (x86)\Microsoft\ILMerge
可以先复制上面代码,在 cmd命令提示符 窗口中点击右键。
3、然后输入命令:(我的是将需要合并的dll和exe放到:D盘的“待合并文件”,完成目录为:D盘“合并完成”,根据需要自行修改。)
ilmerge /ndebug /targetplatform:v4 /target:winexe /out:D:\合并完成\播放器.exe /log D:\待合并文件\简单播放器.exe D:\待合并文件\AxInterop.WMPLib.dll D:\待合并文件\Interop.WMPLib.dll
注:/ndebug:为非调试版本,即发布版本,如果去掉,将会生成.pdb拓展名的调试文件
/target:为目标平台,此处输出为WINEXE
命令的target后面可以接三种类型:
winexe:合并为应用程序文件
library:合并为库文件
exe:合并为exe文件,不同的是打开时会带有cmd命令
/out:合并之后输出的路径及文件名
/log:需要合并的DLL或EXE,需要把所有的合并的EXE或DLL囊括进来
/targetplatform:目标平台,此次为DotNet4.6.2,因此需要目标平台设为v4
该工具的主要用法如下:
Usage: ilmerge [/lib:directory]* [/log[:filename]] [/keyfile:filename [/delaysign]] [/internalize[:filename]] [/t[arget]:(library|exe|winexe)] [/closed] [/ndebug] [/ver:version] [/copyattrs [/allowMultiple] [/keepFirst]] [/xmldocs] [/attr:filename] [/targetplatform:<version>[,<platformdir>] | /v1 | /v1.1 | /v2 | /v4] [/useFullPublicKeyForReferences] [/wildcards] [/zeroPeKind] [/allowDup:type]* [/union] [/align:n] /out:filename <primary assembly> [<other assemblies>...]