ILMerge和MSBuild - 合并的EXE给出了运行时错误

时间:2011-08-22 18:05:09

标签: msbuild ilmerge

将ILMerge添加到我的后期构建任务并运行命令行后,我成功获得了一个合并的程序MyMerged.exe

但是当我运行它时,我得到一个例外

未处理的异常:System.TypeLoadException: 无法从程序集'mymerged,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'加载类型'Microsoft.Build.Utilities.TaskItem',因为方法'.ctor'没有实现(没有RVA)。    在MyProgram.Program.Main(String [] args)

这是ILMerge中的一个错误,它没有处理没有构造函数的情况,或者没有处理没有构造函数的TaskItem中的错误。

感谢

1 个答案:

答案 0 :(得分:2)

在ILMerge命令行中包含Microsoft.Build.Utilities.dll,以便它与程序集合并并找到。

如果您定义了重复类型并使用/allowDup命令行开关,ILMerge将重命名重复类型,这也可能导致“无法加载类型...”错误和运行时期间的意外行为,尤其是在运行时正在使用反射。