我正在尝试使用 ILMerge 工具进行简单的合并,以将 DLL 与可执行文件结合起来。合并本身工作正常,但是在我运行合并的 EXE 之后,它仍然会尝试找到原始 DLL(就像它根本没有合并到 EXE 中一样)。
ILMerge 会自动更新对内部的引用还是我必须手动执行某些操作?我假设 ILMerge 会自动生成所有内容。
EXE 和 DLL 都是 WinForms .NET 3.5。
我正在尝试使用 ILMerge 工具进行简单的合并,以将 DLL 与可执行文件结合起来。合并本身工作正常,但是在我运行合并的 EXE 之后,它仍然会尝试找到原始 DLL(就像它根本没有合并到 EXE 中一样)。
ILMerge 会自动更新对内部的引用还是我必须手动执行某些操作?我假设 ILMerge 会自动生成所有内容。
EXE 和 DLL 都是 WinForms .NET 3.5。
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 - 不适用于本机...
该问题是由尝试使用原始程序集的其他非合并 DLL 引起的。我也必须合并它们,现在一切正常。
有问题的 DLL 之一是否有可能尝试重新打开自身?