frankliuch

导航

多个DLL合并成一个DLL

多个DLL合并成一个DLL,把DLL合并到Exe中的解决方案

1:) 下载 http://download.microsoft.com/download/1/3/4/1347C99E-9DFB-4252-8F6D-A3129A069F79/ILMerge.msi

2:) 开始-》运行 -》 "cmd" -> "cd C:\Program Files\Microsoft\ILMerge"

3:)

3.1、合并file1.dll、file2.dll到destination.dll  
   ILmerge /ndebug /target:dll /out:C:\destination.dll /log C:\file1.dll C:\file2.dll 

        注:

        1:) 其中 "/out:C:\destination.dll" 为合并后的 dll目录及名称

        2:) "C:\file1.dll C:\file2.dll "  为要合并的名称


3.2、合并file1.dll、file2.dll以及myApp.exe到newApp.exe  
       ILmerge /ndebug /target:winexe /out:C:\newApp.exe /log C:\myapp.exe C:\file1.dll C:\file2.dll 

       注:

   1:) 合并为exe时,myapp.exe 必须写在file1.dll、file2.dll 前面

Project=>Properties=>Build Events=>Edit Post-build..输入以下命令行

rem 据当前的exe和dll合关成一个.all.exe文件。
"$(ILMergeDir)\ILMerge.exe" /out:"$(TargetDir)$(TargetName).all.exe" "$(TargetDir)$(TargetName).exe" "$(TargetDir)*.dll" /target:exe /targetplatform:v4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319 /wildcards
rem 移出所有dll文件。
del *.dll
rem 移出所有.pdb文件(除了合并后创建的.all.pdb文件)。
ren "$(TargetDir)$(TargetName).all.pdb" "$(TargetName).all.pdb.temp"
del *.pdb
ren "$(TargetDir)$(TargetName).all.pdb.temp" "$(TargetName).all.pdb"
rem 删除初次生成未合并的exe文件。
del "$(TargetDir)$(TargetName).exe"
rem 重命名.all.pdb和.all.exe文件为初始设置对应的.pdb和.exe文件。
ren "$(TargetDir)$(TargetName).all.pdb" "$(TargetName).pdb"
ren "$(TargetDir)$(TargetName).all.exe" "$(TargetName).exe"
exit 0

参考

命令方式:http://stackoverflow.com/questions/9376/ilmerge-best-practices

GUI界面实现方式:http://ilmergegui.codeplex.com/

posted on 2014-06-16 19:05  frankliuch  阅读(4017)  评论(0编辑  收藏  举报