有什麼辦法可以預編譯MSIL文件,然後在編譯時將.net鏈接器鏈接到.net程序集中?例如,將預編譯的MSIL文件鏈接到程序集中?
因此,例如。我有一個項目。我編譯它,反編譯爲MSIL,並調整MSIL。
現在,我想編譯並鏈接那個微調的msil文件到另一個項目中。
是的,我+對+重新編譯它作爲一個單獨的組件,只是引用它,但在這種特殊情況下,我不能這樣做。 MSIL的內容實際上需要在目標程序集中。
任何想法,如果這是可能的?到目前爲止,我沒有找到任何運氣。
- EDIT-- 一個建議是ILMerge,這可能會奏效。我現在將抓取最新的副本,並會看到這些展會。我遇到的唯一問題是,在過去,我發現合併後調試很困難(或者至少比我沒有使用ILmerge更困難)。我希望可以調整proj文件以將編譯後的MSIL作爲構建過程的一部分直接包含在內,因此所有內容都可以繼續在IDE中輕鬆調試。
- 編輯 - 嘛,看起來並不像ILMerge將對於這種情況 第一份工作,我得到這個消息: 合併過程中出現的異常:(任務id:32) ILMerge.Merge:裝配'Blah'未標記爲僅包含託管代碼。 (TaskId:32) (考慮使用/ zeroPeKind選項 - 但首先閱讀文檔!)(TaskId:32) at ILMerging.ILMerge.Merge()(TaskId:32) at ILMerging.ILMerge.Main(String [] args)(TaskId:32)
好的。所以,到底是什麼,我加入/ zeropekind並重試。
沒有錯誤!
但是,在這種特殊情況下,被合併的DLL在MSIL中調整了幾個函數,將其導出爲CDECL函數。在合併的dll中,它們不再被導出。
大鼠。
回到原點。
是啊,我拉ilmerge和我要去嘗試。我希望+可以調整proj文件,讓構建過程本身在構建過程中直接編譯和/或鏈接msil文件。 ilmerge的問題在於合併後的調試可能會非常棘手。 – DarinH
您是否嘗試過構建後任務?您應該能夠在每次構建完成後運行ilmerge.exe。 – CodingWithSpike