多個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"
或者 C:\Program Files (x86)\Microsoft\ILMerge3:)
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/