C 版dll 程式集合並工具

2022-01-15 00:22:59 字數 2060 閱讀 1231

最近要開發乙個控制項給同事用,開發中會引用一些第三方dll,這樣交給使用者很不方便,希望的效果是直接交付乙個dll檔案。網上找了一些資料。

1.使用

costura.fody ,

這個強大之處是可以在

build

階段直接將依賴的

dll合併在目標

exe中,支援非託管

dll進行

mixed mode

打包,不足之處是

只能將dll

合併到exe

中,不支援

dll和

dll的合併,目前滿足不了我的需求。

參考資料

costura.fody    github

costura.fody

是使用場景:最終發布只有乙個

exe,將依賴的

dll合併到乙個

exe中。

2.    

微軟的ilmerge

工具。這個支援

將exe

依賴的dll

合併到exe

中,也支援將主dll依賴的其他dll合併到乙個dll,這個基本滿足要求,唯一不足之處是沒有

gui,每次使用敲命令很不方便,於是繼續尋找,有

ilmergegui

。3.      

ilmergegui

也不好用,看來還是自己動手豐衣足食。

4.自己開發

ilmergegui

微軟的ilmerge

需要安裝才能使用,結合

costura.fody

可以將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

獲取或設定合併後生成的檔名,必須在呼叫

merge()

之前設定。

public

void settargetplatform(string platform, string dir);

設定.net framework

目標平台,

platform

引數支援的:

"v1", "v1.1", "v2", "v4"

,第二個引數為

mscorlib.dll

目錄public

ilmerge.kind targetkind

獲取或設定目標平台型別

(windows

應用程式、

dos應用程式、

dll)

public

enum

kind

此工具設定為

sameasprimaryassembly

,即與輸入檔案的主程式集相同。

public

void merge();

開始合併。

C 版dll 程式集合並工具

最近要開發乙個控制項給同事用,開發中會引用一些第三方dll,這樣交給使用者很不方便,希望的效果是直接交付乙個dll檔案。網上找了一些資料。1.使用 costura.fody 這個強大之處是可以在build階段直接將依賴的dll合併在目標exe中,支援非託管dll進行mixed mode 打包,不足之...

C 版dll 程式集合並工具

原文 c 版dll 程式集合並工具 最近要開發乙個控制項給同事用,開發中會引用一些第三方dll,這樣交給使用者很不方便,希望的效果是直接交付乙個dll檔案。網上找了一些資料。1.使用 costura.fody 這個強大之處是可以在 build 階段直接將依賴的 dll合併在目標 exe中,支援非託管...

C 版dll 程式集合並工具

最近要開發乙個控制項給同事用,開發中會引用一些第三方dll,這樣交給使用者很不方便,希望的效果是直接交付乙個dll檔案。網上找了一些資料。1.使用 costura.fody 這個強大之處是可以在build階段直接將依賴的dll合併在目標exe中,支援非託管dll進行mixed mode 打包,不足之...