2011-09-06 166 views
8

我试图将两个程序集合并成一个程序集,该程序安静地运行正常。然而,当我尝试合并* .pdb文件太多,我得到一个错误:如果我使用/ NDEBUG选项以跳过合并* .pdb文件尝试合并pdb文件时出现ILMerge异常

Access to the path "F:\Fentec\Businessplan\trunk\Ausgabe\Debug\modules\Planrechnung\Planrechnung.pdb" is denied.

,它工作正常。但是当然这些符号在调试时不能加载。起初,我想在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

可能重复http://stackoverflow.com/questions/1439721/is-there- a-way-to-merge-pdb-files-with-ilmerge) –

+0

不,我读过这个问题。但它只处理如何处理/ ndebug选项,而不是我在这里的问题。 – Skalli

回答

19

我发现问题的解决方案,它有点尴尬。

输出名称不能与其中一个合并的pdb文件名称相同。否则会出现这个问题。当我改变组件的名称时,它的效果很好。在进程中覆盖程序集也没有问题,但不能覆盖现有的pdb文件。
我没有料到这一点,偶然发现了它。对不起,所有的麻烦

问候,
Skalli

的[有没有办法合并与ilmerge pdb文件?(
+0

也犯了同样的错误。 +1这个 – yas4891

+0

我也是这样做的,你有点救了我的命。这种愚蠢的东西。不要对不起,你提供了一个很好的问题,这是一个拯救生命的答案,这是谷歌的第一个条目之一。 – JoshuadV

+1

如果您指定其他\ output目录,则不会发生此类错误,并且您不必更改名称。 –

0

像.pdb文件被锁定,这听起来对我来说,可能是因为它是在使用一个调试器(如Visual Studio)。

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

如果这样做不起作用,请使用类似Process Explorer这样的工具来搜索打开该文件的进程。在进程管理器,你可以使用查找做到这一点 - >查找处理或DLL ...:

Screenshot of the Process Explorer Search dialog

输入文件/ PDB您正在搜索的名称,它就会列出所有进程文件打开 - 关闭单个句柄或关闭/关闭这些应用程序,然后重试。

+0

你好贾斯汀,我已经试过了。使用Planrechnung.pdb没有句柄。但我发现,ILMerge本身就是造成这个问题的原因。 ILMerge可以覆盖程序集,但不能覆盖pdb文件。我已经改变了大会的名称,现在它似乎工作。 – Skalli

相关问题