最近要開發乙個控制項給同事用,開發中會引用一些第三方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 打包,不足之...