我正在尝试将两个程序集合并到一个程序集中,这样可以很安静。然而,当我尝试合并* .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
答案 0 :(得分:21)
我找到了问题的解决方案,这有点令人尴尬。
输出名称不能与其中一个合并的pdb文件的名称相同。否则会出现此问题。当我更改装配的名称时,它工作得很好。在过程中覆盖程序集也没问题,但是你不能覆盖现有的pdb文件 我没想到这一点,偶然发现了它。抱歉所有麻烦
问候,
Skalli
答案 1 :(得分:0)
听起来像.pdb文件被锁定,可能是因为它在调试器(例如Visual Studio)中使用。
尝试关闭Visual Studio和您的应用程序(如果您还没有)。
如果不起作用,请使用Process Explorer之类的工具搜索打开该文件的进程。在进程资源管理器中,您可以使用查找 - >执行此操作。查找句柄或Dll ......:
输入您要搜索的文件/ pdb的名称,它将列出打开该文件的所有进程 - 关闭单个句柄或终止/关闭这些应用程序,然后重试。