我正在尝试使用ILMerge工具将DLL与可执行文件合并进行简单合并。合并本身工作正常,但在我运行合并的EXE之后,它仍然试图找到原始的DLL(就好像它根本没有合并到EXE中)。
ILMerge是否自动更新对内部的引用,或者我必须手动执行某些操作?我假设ILMerge自动完成所有操作。
EXE和DLL都是WinForms .NET 3.5。
答案 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是否有可能尝试重新打开自己?