2011-08-18 67 views
0

我正在嘗試使用ILMerge工具將DLL與可執行文件結合起來進行簡單合併。合併本身工作正常,但是在我運行合併的EXE後,它仍然嘗試查找原始DLL(就像它沒有合併到EXE中一樣)。.NET EXE仍然嘗試使用ILMerge將其合併後找到一個DLL

ILMerge是否自動更新內部引用或我必須手動執行某些操作?我是在假設ILMerge自動完成一切。

EXE和DLL都是WinForms .NET 3.5。

+1

是什麼樣的項目呢?例如,ILMerge不適用於wpf。 – Matthieu

回答

1

該問題是由其他未合併的DLL嘗試使用原始程序集引起的。我不得不合並它們,現在一切正常。

1

ILMerge做幾件事情自動...
但實際上ILMerge都修改DLL + EXE的內部結構......

不是「喜歡」的所有DLL等被「搞砸了」這種方式。 ..

例如,當EXE和/或DLL使用反射或WPF合併可以使他們失敗...

在這種情況下,「嵌入」(而不是合併)效果最好......雖然你將有編寫約10行代碼 - 請參見http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

如果你只是想要一個工具,使這(和其他一些東西)發生也有一些在那裏 - 例如SmartAssembly ...

不過請注意:任何上述作品只與.NET的DLL - 不是與本地的...

+0

我實際上已經嘗試過使用多個DLL,但它們都不起作用。 – SharpAffair

+0

它真的取決於DLLs - 一些檢查具體的事情,或者當反射在玩合併可能會失敗......無論如何嵌入工作在這種情況下:-) – Yahia

0

它有可能是一個有問題的DLL試圖重新打開自己?

相關問題