在使用ILMerge/Costura组合程序集后,有什么办法让VS(2010)接受PDB?

use*_*196 5 .net ilmerge localization visual-studio-2010 fody-costura

这个问题与我自己的案例有针对性,因为任何拥有本地化应用程序并且必须提供独立EXE的人都有这个问题 - 他们会想要使用ILMerge(或Costura或某些自制程序解决方案)来放置本地化DLL(或任何其他程序集)进入他们的EXE--但一旦他们这样做,他们就不能再调试他们的代码了.VS调试器将拒绝接受为原始EXE生成的原始PDB文件,可能是因为ILMerge步骤更新校验和或更改GUID.

我想知道的是,如果有任何解决方法...就像一些鲜为人知的ILMerge选项,也许吧?它让我感到非常普遍和不必要的调试能力.

我相信在本地化之后调试这样一个应用程序的唯一其他方法是维护一个使用DLL非ILMerged的并行构建选项,这很好,除非您碰巧想要调试本地化代码本身(例如,我).那你真的不走运.谁能想到其他选择?

我也尝试使用Costura,但由于本地化DLL都包含相同名称的资源(并且与主资源AppName.resource相同),因此您只能在引用中添加一个这样的DLL:不允许使用后续的DLL.有没有办法噱头Costura工作?(如果它可以工作,PDB问题可能不会发生,因为组合是视觉工作室构建的一部分..?)

编辑:我正在寻找导致PDB/EXE匹配的想法.我意识到你可以在十六进制编辑器中破解pdb.然而,问题特别询问了如何使系统按预期工作.

Tyl*_*den 0

PDB 文件和 EXE 都有一个 GUID。如果 GUID 不匹配,则调试器将拒绝加载 PDB 文件。如果您手动编辑这两个文件之一以使 GUID 匹配,则将加载 PDB 文件。这可能会导致反汇编中的符号信息不正确。