2011-08-22 68 views
0

添加ILMerge我的帖子構建任務和工作了命令行後,我成功地獲得了合併計劃MyMerged.exeILMerge和的MSBuild - 合併EXE是給運行時錯誤

但是當我運行它,我得到一個異常

未處理的異常:System.TypeLoadException: 無法從組件加載類型 'Microsoft.Build.Utilities.TaskItem' 'mymerged,版本= 1.0.0.0,文化=中性公鑰=空',因爲該方法」 .ctor '沒有實現(沒有RVA)。 at MyProgram.Program.Main(String [] args)

這是ILMerge中的一個錯誤,它沒有處理沒有構造函數的情況,或者是沒有TaskItem的錯誤。

感謝

+0

找到了更好的方法....參見http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-第三版.aspx – jradxl

回答

2

的ILMerge命令行上包括Microsoft.Build.Utilities.dll,這樣它會得到你的裝配,發現合併英寸

如果您定義了重複的類型並使用/allowDup命令行開關,ILMerge會重命名重複類型,這也可能會導致「無法加載類型...」錯誤和運行期間的意外行爲,特別是在反射時用過的。

+0

我有同樣的問題。關於/ allowDup的部分是非常有幫助的,謝謝!而不是此部分「/ allowDup MyMainDLL.dll .dll」剛剛使用「.dll」 – gisek