尝试合并pdb文件时出现ILMerge异常

时间:2011-09-06 10:40:12

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

我正在尝试将两个程序集合并到一个程序集中,这样可以很安静。然而,当我尝试合并* .pdb文件时,我收到一个错误:

  

拒绝访问路径“F:\ Fentec \ Businessplan \ trunk \ Ausgabe \ Debug \ modules \ Planrechnung \ Planrechnung.pdb”。

如果我使用/ ndebug选项以跳过合并* .pdb文件,它可以正常工作。但是当然在调试时无法加载符号。起初我想在postbuild事件中调用ILMerge时,Planrechung.pdb正在使用并被锁定。我也尝试关闭VS2010并从命令行调用ILMerge,但结果保持不变。我检查了ProcessExplorer,文件上没有句柄。

这就是我打电话给ILMerge的方式:

  

E:\ XP \ Tools \ ILMerge \ ilmerge /targetplatform:v4,"D:\WINDOWS\Microsoft.NET\Framework\v4.0.30319“/ lib:”F:\ Fentec \ Businessplan \ trunk \ Ausgabe \ Debug \ bin“/out:Planrechnung.dll”F:\ Fentec \ Businessplan \ trunk \ Ausgabe \ Debug \ modules \ Planrechnung \ Planrechnung.dll“”F:\ Fentec \ Businessplan \ trunk \ Ausgabe \ Debug \ modules \ Mandantenverwaltung \ Mandantenverwaltung .DLL“

我错过了什么吗?如果您需要任何其他信息,请询问。

问候,
Skalli

2 个答案:

答案 0 :(得分:21)

我找到了问题的解决方案,这有点令人尴尬。

输出名称不能与其中一个合并的pdb文件的名称相同。否则会出现此问题。当我更改装配的名称时,它工作得很好。在过程中覆盖程序集也没问题,但是你不能覆盖现有的pdb文件 我没想到这一点,偶然发现了它。抱歉所有麻烦

问候,
Skalli

答案 1 :(得分:0)

听起来像.pdb文件被锁定,可能是因为它在调试器(例如Visual Studio)中使用。

尝试关闭Visual Studio和您的应用程序(如果您还没有)。

如果不起作用,请使用Process Explorer之类的工具搜索打开该文件的进程。在进程资源管理器中,您可以使用查找 - >执行此操作。查找句柄或Dll ......:

Screenshot of the Process Explorer Search dialog

输入您要搜索的文件/ pdb的名称,它将列出打开该文件的所有进程 - 关闭单个句柄或终止/关闭这些应用程序,然后重试。