ILMerge定位的组件' X'清单定义与程序集引用不匹配

时间:2014-03-19 17:18:03

标签: c# .net visual-studio-2010 .net-assembly ilmerge

我一直在寻找我的问题的解决方案,但我发现的所有答案似乎都不符合我的问题。我正在使用@Contango on this question找到的ILMerge构建脚本。它构建并且我能够使用.exe创建的很好。

当我尝试调试时出现问题。当我调试而不是仅仅构建项目时,我得到了这个错误:

  

尝试运行项目时出错:无法加载文件或程序集   'SpecSheet_Verifier'或其依赖项。定位组件   manifest与程序集引用不匹配。 (HRESULT异常:0x80131040)

'SpecSheet_Verifier'是我的程序集的名称,而不是像我发现的大多数问题那样的.dll。

所以,在我开始疯狂试图让它工作之前,我想检查一下是否可以调试我通过ILMerge构建的可执行文件。如果是,那我该怎么做呢?

我正在使用的构建脚本:(感谢Contango)

"$(SolutionDir)ILMerge\ILMerge.exe" /out:"$(TargetDir)$(TargetName).all.exe" "$(TargetDir)$(TargetName).exe" "$(TargetDir)*.dll" /target:exe /targetplatform:v4,C:\Windows\Microsoft.NET\Framework64\v4.0 /wildcards
del *.dll
ren "$(TargetDir)$(TargetName).all.pdb" "$(TargetName).all.pdb.temp"
del *.pdb
ren "$(TargetDir)$(TargetName).all.pdb.temp" "$(TargetName).all.pdb"
del "$(TargetDir)$(TargetName).exe"
ren "$(TargetDir)$(TargetName).all.pdb" "$(TargetName).pdb"
ren "$(TargetDir)$(TargetName).all.exe" "$(TargetName).exe"
exit 0

2 个答案:

答案 0 :(得分:1)

我遇到了同样的错误,并且能够通过进入项目设置来调试ILMERGE& d exe,并确保"启用Visual Studio托管过程"未经检查。

答案 1 :(得分:1)

由于这没有标记为答案,我至少可以确认jm可能为我节省了数小时的痛苦。我之前发现的大部分帖子都已过时,或者充其量是误导性的。是的,你可以调试ilmerged模块,只是确保不要使用\ ndebug并正确处理/复制/重命名生成的pdb文件