日期:2014-05-17  浏览次数:21096 次

winform如何只生成一个exe?
一个winform项目项目引用了一个dll,当生成时会在Release目录中存在以下文件: a.exe,b.dll
我现在想把2个文件合并,编译成一个文件c.exe,即看不到b.dll这个文件,如何做到呢?

------解决方案--------------------
搜索ILMerge,这个可以合并exe和多个dll
------解决方案--------------------
试试微软的ilmerge

------解决方案--------------------
除了用ILMerge,还可以把dll当成资源打包进exe
------解决方案--------------------
C# 中将所有引用的DLL 和exe文件打成一个exe文件

C#工程经常会引用多个DLL文件,形成一个完整的工程项目的目的。这样的工程在发布时,需要将编译形成的EXE文件与DLL文件共同发布。如果感觉麻烦,可以将这些DLL文件与EXE文件合并,最终形成一个更大的EXE文件,然后只发布这个EXE文件就可以。这个工具就是ilMerge,可以到http://research.microsoft.com/~mbarnett/ILMerge.aspx下载。
下载安装完毕后,设安装在c:\ilMerge目录下,只有一个有用的文件,ilMerger.exe,对于需要装配到一起的文件,我的意见是将当时工程中形成的EXE文件和引用的DLL文件都拷贝到ilMerger目录下,(我的实验例子中是chemRegression.exe文件和zedGraph.dll文件),然后进入dos窗口,进入ilMerger目录,既
c:\ilMerger,然后执行下面目录:
c:\ilMerger>ilmerge /ndebug /target:winexe /out:newclient.exe chemRegression.exe /log zedgraph.dll
就可以合并,合并后形成的exe文件为newclient.exe
以上实验在.net framework2.0 平台,vs2005环境下测试通过
------解决方案--------------------
ILMerge
ILMerge 可以将多个.NET程序集合并成一个单一的程序集
合并DLL:ILMerge /target: library /out: output.dll input1.dll input2.dll input3.dll
合并EXE:ILMerge /target: exe /out: output.exe input1.exe input2.dll input3.dll 
参考
压缩为EXE文件