.NET EXE在使用ILMerge合并后仍尝试查找DLL

时间:2011-08-18 18:29:32

标签: .net merge assemblies ilmerge

我正在尝试使用ILMerge工具将DLL与可执行文件合并进行简单合并。合并本身工作正常,但在我运行合并的EXE之后,它仍然试图找到原始的DLL(就好像它根本没有合并到EXE中)。

ILMerge是否自动更新对内部的引用,或者我必须手动执行某些操作?我假设ILMerge自动完成所有操作。

EXE和DLL都是WinForms .NET 3.5。

3 个答案:

答案 0 :(得分:1)

ILMerge会自动生成几件事...
但是ILMerge实际上修改了DLL + EXE的内部结构......

并非所有的DLL等“喜欢”以这种方式“混乱”......

例如,当EXE和/或DLL使用Reflection或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 - 不适用于原生的......

答案 1 :(得分:1)

该问题是由尝试使用原始程序集的其他非合并DLL引起的。我也必须合并它们,现在一切正常。

答案 2 :(得分:0)

有问题的DLL是否有可能尝试重新打开自己?