C# 版dll 程序集合並工具

C# 版dll 程序集合並工具

     最近要開發一個控件給同事用,開發中會引用一些第三方DLL,這樣交給用戶很不方便,但願的效果是直接交付一個DLL文件。網上找了一些資料。html

 1.       使用 Costura.Fody ,這個強大之處是能夠在build階段直接將依賴的DLL合併在目標EXE中,支持非託管DLL進行mixed mode 打包,不足之處是git

只能將DLL合併到EXE中,不支持DLLDLL的合併,目前知足不了個人需求。github

參考資料 http://www.cnblogs.com/instance/archive/2015/10/09/4863811.html工具

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

      Costura.Fody 是使用場景:最終發佈只有一個EXE,將依賴的DLL合併到一個EXE中。spa

 

2.    微軟的ILMerge工具。.net

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

這個支持EXE依賴的DLL合併到EXE中,也支持將主DLL依賴的其餘DLL合併到一個DLL,這個基本知足要求,惟一不足之處是沒有GUI,每次使用敲命令很不方便,因而繼續尋找,有ILMergeGUI code

 

3.      ILMergeGUIorm

地址: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

相關文章
相關標籤/搜索