【问题标题】:ILMerge exception when trying to merge pdb file尝试合并 pdb 文件时出现 ILMerge 异常
【发布时间】:2011-09-06 10:40:12
【问题描述】:

我正在尝试将两个程序集合并为一个程序集,它运行良好。然而,当我尝试合并 *.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”

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

您好,
斯卡利

【问题讨论】:

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


【解决方案1】:

我找到了解决问题的方法,有点尴尬。

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

您好,
斯卡利

【讨论】:

  • 犯了同样的错误。为此 +1
  • 我也做了同样的事情,你救了我的命。这么蠢的东西。不要抱歉,您提供了一个很好的问题和一个拯救生命的答案,这是谷歌的第一个条目之一。
  • 如果你指定了一些其他的\output目录,就不会出现这样的错误,你也不必改名。
【解决方案2】:

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

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

如果这不起作用,请使用Process Explorer 之类的工具来搜索打开该文件的进程。在进程资源管理器中,您可以使用 Find -> Find Handle or Dll...:

输入您正在搜索的文件/pdb 的名称,它将列出所有打开该文件的进程 - 关闭各个句柄或杀死/关闭这些应用程序并重试。

【讨论】:

  • 你好贾斯汀,我已经试过了。没有使用 Planrechnung.pdb 的句柄。但我发现,ILMerge 本身就是造成问题的原因。 ILMerge 可以覆盖程序集,但不能覆盖 pdb 文件。我已经更改了程序集的名称,现在它似乎可以工作了。
猜你喜欢
  • 2021-12-25
  • 1970-01-01
  • 2011-02-02
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多