在Windows下,可以使用upx这样的工具来压缩可执行文件的大小,不过这种工具不支持.NET程序。.NETZ是一个开源的支持.NET程序压缩的工具,它也可以将一个EXE和多个DLL合并在一起执行。
如果要压缩一个EXE程序,只需要执行:
netz app.exe
如果要指定图标,可以执行:
netz app.exe -i app.ico
如果程序是控制台程序,需要执行:
netz -c app.exe
也可以把程序和DLL合并为一个应用程序:
netz -s app.exe lib1.dll lib2.dll
.NETZ的工作原理,实际上是先利用#ZipLib 对执行文件进行压缩。执行时在内存中先释放,再利用reflection来实现加载和调用。可以参考DDJ上的相关文章http://www.ddj.com/documents/s=9570/ddj0503m/0503m.html。