码迷,mamicode.com
首页 > Web开发 > 详细

使用LibZ合并.Net程序集

时间:2014-09-09 10:38:08      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:winform   style   blog   http   color   os   io   使用   ar   

最近写了一个小的WPF程序,发布的时候发现依赖着两三个20~30k的小dll的,感觉有点不爽,就想把它合并一下。以前在WinForm下用过微软的ILMerge合并程序集,不过记得它对WPF程序支持不大好。便在网上搜了一下,找到了一种资源嵌入的方式Combining multiple assemblies into a single EXE for a WPF application,园子里也有文章介绍这种方式:wpf dll和exe合并成一个新的exe

这种方式的原理并不复杂,不过感觉这种通用的方式应该可以通过工具来实现,每个程序都这么实现一把有点麻烦,便再继续搜了一下,在CodePlex上找到了一个叫LibZ Container的程序可以帮助我们快速实现这一过程,它是一个命令行工具,使用方式如下:

????Libz inject-dll --assembly MyApplication.exe --include *.dll --move

这个工具还有许多其它的参数,具体的可以看看它的详细说明。 由于这种工具的原理是将DLL作为资源嵌入了主程序集中,并且LibZ打包的时候貌似还做了一个压缩的动作,理论上会影响启动速度的。不过需要合并程序集的一般都是些小程序,目前还没有看到什么大的影响。

另外,发现这种工具还蛮多的,当时找到的就有netz(需要FQ)IL-RepackCostura.Fody,简单的试了两个,感觉侧重点有所不同,不过只是打包dll的话,效果基本上都差不多。

需要注意的是:当主程序在XAML中依赖于其它DLL提供的资源文件的时候(主题样式等资源字典),由于对程序集的依赖是作为BAML文件嵌入到了程序中,要合并这种带资源的程序集需要修改这些BAML文件,而这是一件比较麻烦的事情,目前还没有见过那个工具做到了这一点。因此,资源的DLL是不能参与程序集合并的,资源文件的DLL的依赖性是无法去掉的。

使用LibZ合并.Net程序集

标签:winform   style   blog   http   color   os   io   使用   ar   

原文地址:http://www.cnblogs.com/TianFang/p/3961185.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!