注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

DLL捆绑器发布  

2011-03-26 21:04:43|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

        .NET平台就是好,许多现成的类库都可以直接拿过来用,只要添加引用即可,不管是COM还是DLL,只要别人把接口暴露出来,使用起来就像自己写的代码一样,使得程序的开发加快了不少。但是这个好处是有代价的:动态链接库必须跟着程序一起走,一旦缺失必须的动态链接库,你写的程序也就完蛋了。如果有个方法把程序和库捆绑在一起,最后只生成一个独立的可执行文件,将会很方便……

        你还别说,还真有这种宝贝,这就是微软提供的ILMerge,顾名思义,就是中间语言级别的合并,下面是下载地址:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=22914587-b4ad-4eae-87cf-b14ae6a939b0&displaylang=en

下载安装之后,实际上只有一个可执行是很有用的(另外一个是帮助手册,一个是版权申明),不过,这个程序是控制台形式的,许多习惯了窗口程序的人都很不习惯,于是我就写了个窗口程序,界面如下:

DLL捆绑器发布 - Castor - 趁年轻,多折腾~~

         这个程序引用了ILMerge程序,因为我的程序编译通过之后,我把ILMerge和我的窗口程序都合并在了一起,所以本程序的第一个产品还是自身。另外,程序的界面是没有这么漂亮的,实际上我使用了一个名为DotNetSkin的DLL程序,同样的,也被打包进来了(哈哈),最后得到的程序就是你上面看到的样子。
这里是下载地址:

         注意:本程序只针对.NET编译生成的DLL和EXE,因为其他语言生成的DLL是不能转化为中间语言的,另外也不支持COM,所以不要拿着相同后缀的程序就下手,例如测试捆绑一个非.NET生成的DLL:

DLL捆绑器发布 - Castor - 趁年轻,多折腾~~

        另外我还对ILMerge中的许多可控选项都做了一点优化,只能满足最常见的EXE+DLL合并,最后需要提醒的是,如果DLL已经被捆绑,就不能被再次捆绑了,否则会出现如下的问题:

DLL捆绑器发布 - Castor - 趁年轻,多折腾~~

         最后的最后,就是本过程是不可逆的,因为……大概是因为热力学第二定律吧,^_^。

        如果在使用过程中出现了错误一点不要觉得奇怪,因为原程序本身就有许多没有解决的地方(我看了一下说明中的Trouble Shooting,那是相当的棘手),因此,你最好不要在捆绑完成之后就把原始程序和DLL都删除了,不然……。反正,我写的程序就那样,如果想体验原程序的强大功能,请使用控制台方式,本人将在测试一段时间之后将把源代码贴出来。

最后感谢Microsoft Research的Michael Barnett为我们提供这么Cool的程序,总算见识到了微软程序员的风采。

  评论这张
 
阅读(2267)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016