将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中的错误。
感谢
答案 0 :(得分:2)
在ILMerge命令行中包含Microsoft.Build.Utilities.dll
,以便它与程序集合并并找到。
如果您定义了重复类型并使用/allowDup
命令行开关,ILMerge将重命名重复类型,这也可能导致“无法加载类型...”错误和运行时期间的意外行为,尤其是在运行时正在使用反射。