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中。

 

  1.    微软的ILMerge工具。

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

本条支撑将EXE器重的DLL合并到EXE中,也辅助将主DLL依赖的别样DLL合并到一个DLL中,那一个中央满意必要,唯一不足之处是不曾GUI,每一次使用敲命令很不便于,于是继续查找,有ILMergeGUI 。

 

  1.      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

相关文章