C# 版dll 程序集合并工具

简介: 原文:C# 版dll 程序集合并工具C# 版dll 程序集合并工具      最近要开发一个控件给同事用,开发中会引用一些第三方DLL,这样交给用户很不方便,希望的效果是直接交付一个DLL文件。网上找了一些资料。
原文: C# 版dll 程序集合并工具

C# 版dll 程序集合并工具

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

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

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

参考资料 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版本支持v1v1.1 v2v4,注意要与主文件及相关文件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

 

 

 

 

 

 

 

 

 

 

目录
相关文章
|
1月前
|
缓存 C# Windows
C#程序如何编译成Native代码
【10月更文挑战第15天】在C#中,可以通过.NET Native和第三方工具(如Ngen.exe)将程序编译成Native代码,以提升性能和启动速度。.NET Native适用于UWP应用,而Ngen.exe则通过预编译托管程序集为本地机器代码来加速启动。不过,这些方法也可能增加编译时间和部署复杂度。
|
30天前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
|
23天前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
|
1月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
48 0
|
1月前
|
安全 API C#
C# 如何让程序后台进程不被Windows任务管理器强制结束
C# 如何让程序后台进程不被Windows任务管理器强制结束
59 0
|
1月前
|
SQL JSON BI
最好的 C# .NET 报告工具
最好的 C# .NET 报告工具
36 0
|
1月前
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
73 0
|
6月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
189 3
|
9天前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
22 3
|
30天前
|
安全 C# 数据安全/隐私保护
实现C#编程文件夹加锁保护
【10月更文挑战第16天】本文介绍了两种用 C# 实现文件夹保护的方法:一是通过设置文件系统权限,阻止普通用户访问;二是使用加密技术,对文件夹中的文件进行加密,防止未授权访问。提供了示例代码和使用方法,适用于不同安全需求的场景。