0

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

ILMerge 会自动更新对内部的引用还是我必须手动执行某些操作?我假设 ILMerge 会自动生成所有内容。

EXE 和 DLL 都是 WinForms .NET 3.5。

4

3 回答 3

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 - 不适用于本机...

于 2011-08-18T18:35:56.273 回答
1

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

于 2011-08-20T11:32:04.313 回答
0

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

于 2011-08-18T18:40:54.827 回答