C# 版dll 程序集合并工具

最近要开发一个控件给同事用,开发中会引用一些第三方DLL,这样交给用户很不方便,希望的效果是直接交付一个DLL文件。网上找了一些资料。

 1.       使用 Costura.Fody ,这个强大之处是可以在build阶段直接将依赖的DLL合并在目标EXE中,支持非托管DLL进行mixed mode 打包,不足之处是

只能将DLL合并到EXE中,不支持DLL和DLL的合并,目前满足不了我的需求。

参考资料 http://www.cnblogs.com/instance/archive/2015/10/09/4863811.html

Costura.Fody    github地址:https://github.com/Fody/Costura

      Costura.Fody 是使用场景:最终发布只有一个EXE,将依赖的DLL合并到一个EXE中。

 

2.    微软的ILMerge工具。

下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=17630

这个支持将EXE依赖的DLL合并到EXE中,也支持将主DLL依赖的其他DLL合并到一个DLL,这个基本满足要求,唯一不足之处是没有GUI,每次使用敲命令很不方便,于是继续寻找,有ILMergeGUI 。

 

3.      ILMergeGUI

地址:http://ilmergegui.codeplex.com/

这个代码下载下来编译都不通过,也不好用,看来还是自己动手丰衣足食。

 

4. 自己开发ILMergeGUI 

微软的ILMerge需要安装才能使用,结合Costura.Fody可以将ILMerge合并到自己开发的工具中,并且无需安装ILMerge.

 

 

 

说明:

  1.      当主文件为dll时,合并导出的文件为 DLL,当主文件类型为exe 时,合并后的文件为exe;
  2.     . 列表里面的dll文件为主文件的依赖文件;
  3.      CLR版本支持v1、v1.1、 v2、v4,注意要与主文件及相关文件CLR版本一致;

            勾选日志输出,会在工具目录生成日志文件。

 

       ILMerge关键API:

public void SetInputAssemblies(string[] assems);

设置输入的程序集,每一项为程序集包含文件绝对路径的全名,其中参数第一个程序集为主程序集。必须在调用Merge()之前设置。

 

public string OutputFile { get; set; } 

获取或设置合并后生成的文件名,必须在调用Merge()之前设置。 

 

public void SetTargetPlatform(string platform, string dir);

设置.net framework目标平台,platform参数支持的:"v1", "v1.1", "v2", "v4",第二个参数为mscorlib.dll目录

 

public ILMerge.Kind TargetKind { get; set; }

获取或设置目标平台类型(Windows应用程序、DOS应用程序、DLL)

public enum Kind

        {

            Dll = 0,

            Exe = 1,

            WinExe = 2,

            SameAsPrimaryAssembly = 3,

        }

此工具设置为SameAsPrimaryAssembly,即与输入文件的主程序集相同。

 

public void Merge();

开始合并。

 

工具下载:http://files.cnblogs.com/files/sndnnlfhvk/ILMergeGUI.zip

源码下载:http://files.cnblogs.com/files/sndnnlfhvk/ILMergeGUICode.zip

时间: 2024-10-29 05:35:33

C# 版dll 程序集合并工具的相关文章

C#程序(含多个Dll)合并成一个Exe的简单方法_C#教程

开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. 但是,很多时候我们本想开发一款只需要一个exe就能完美运行的小工具.那该怎么办呢? 下文介绍一种超简单的方法,不用写一行代码就可轻松实现. 这里我们需要用到一款名为Fody.Costura的工具.Fody.Costura是一个Fody框架下的插件,可通过Nuget安装到VS工程中.安装之后,就可以将项目所依赖的DLL(甚至PDB)文件全部打包到EXE文件里. 使用方法 在VS中,通过Nuget为

28个实用的源码/文档比较合并工具

原文:http://www.iteye.com/news/22639 要想搞清楚一个文件的两个版本之间的不同之处并不是件简单的任务,而当该文件是比较长的源代码时,这就更加复杂了.   下面列出的工具可以帮助你分析和比较文档,必要时还可以进行合并.这些工具可以比较从Word文档到WAV文件等所有的文件类型,甚至支持代码语法高亮显示.有些是免费的,有些是收费的,适用于Mac OS X.Windows或Linux.   1.  Beyond Compare Version 3     Beyond C

Photoshop合并工具合并一幅风景全景图片

导言:我叫Alvaro Guzman,从事网站开发和图形设计的工作.对我来说数字设计是一种现代的艺术,我可以探索新兴技术,亦可以向公众传递清晰的信息. 看看,这就是我们将要制作的照片. 第1步:拼合之前全景图片吗?不过就是照几张照片,然后在Photoshop中拼合起来.你可以使用自动的Photoshop合并工具,或者再加上手动使用图章工具.因为任何号称"自动"的东西都不可能100%准确,所以我们会把这两者结合起来. 很显然,第一步就是照相,但是全景照片可不太好拍.我使用了我朋友Alva

Win7旗舰版系统桌面小工具更新停滞如何修复的方法

Win7旗舰版操作系统自带很多小工具,比如日历.天气.股票和CPU仪表盘等等,这些工具确实给我们带来很多方便实用.但是在使用过程中难免会遇到一些错误问题,比如要更新小工具上的天气,使用一直处于停滞状态中.而且数据也无法更新,这让我们在使用中带来一定麻烦,那么究竟是什么原因引起这种症状呢?电脑公司win7系统 又该如何去修复小工具数据无法更新的问题? Win7旗舰版系统桌面小工具更新停滞如何修复原因分析: 可能由于桌面小工具的缓存文件过多导致 Win7旗舰版系统桌面小工具更新停滞如何修复解决步骤:

SVN之初恋与小三Meld优秀分支合并工具

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 今天小宝鸽分享一篇SVN入门教程,比较适合刚接触SVN的猿友阅读.  另外分享一个优秀的分支合并工具Meld,对SVN使用比较熟练的猿友们也可以了解一下咯.  接下来将从下面几个维度向大家介绍: (1)SVN简介与SVN环境搭建(附有安装包哦) (2)本地仓库建立以及一些常用操作 (3)Meld的介绍与使用 接下来马上开始: (1)SVN简介与SVN环境搭建(附有安装包哦)

js的压缩合并工具用的是什么?

问题描述 js的压缩合并工具用的是什么? 解决方案 我是PHP的新手,很喜欢Kod的代码结构和风格,拿来学习PHP的开发的,不过我一直都搞不清楚怎么js合并成main.js,想请教一下楼主解决方案二:使用UglifyJS合并

深度技术GHOSTXP八分钟快速装机版 V3.5BT版 下载_常用工具

深度Ghost XP 快速装机版3.5_八分钟装机板,此次制作的版本 我们自己经过多次的测试 编号:        1                                                    2 cpu:    毒龙1.1                                        赛扬1.3 主板:    KT333                                          Intel815 内存:    512     

使用JSP+CSS+Servlet技术制作网页版的即时聊天工具。

问题描述 使用JSP+CSS+Servlet技术制作网页版的即时聊天工具.一.预定义APPLICATION级的用户10个,用户有用户名和密码.二.制作用户登录界面.使用者可以使用预置的10个用户信息登录.三.制作聊天页面.页面的上3/4为消息显示区,用于显示聊天内容,按照消息发布顺序显示用户名:消息内容.页面的下1/4为消息输入区,用于接收用输入的消息.四.用户在消息输入区输入消息,按回车将消息发布到服务器.五.每隔5秒,自动从服务器获取用户所发布的所有消息并更新消息显示区.1.建立MyEcli

c# 动态加载和卸载C#DLL程序集 C++程序集,

c# 动态加载和卸载C#DLL程序集的原文链接是: http://www.cnblogs.com/MiracleLee/archive/2013/01/31/2886323.html 做一个开源项目地址是: 点击打开链接