0

我有一个使用 MSBuild 构建的 Visual Studio 类库 DLL,当在调试配置中使用它时,它会将 DLL、PDB 和各种资源文件复制到 Web 应用程序中。我遇到的问题是,当我调试 Web 应用程序时,Visual Studio 2010 调试器只会加载 PDB 文件中的符号,这些符号位于构建期间创建的中间目录中。即使我在 VS 中指定符号位置以将文件夹包含在 Web 应用程序中,这始终会被忽略,并且 VS 总是直接进入中间位置,这显然是以某种方式硬编码到 DLL 中。此处的中间目录是指可以在 MSBuild 中使用 BaseIntermediateOutputPath 属性设置的文件夹,如果未明确包含此设置,它将默认创建一个 obj 文件夹。

为什么 Visual Studio 2010 调试器会这样做?我在项目属性的任何地方都看不到对 obj 文件夹的任何显式引用。在尝试配置远程调试器设置时,这给我带来了很大的困难。无论如何要覆盖这种行为,还是 VS 2010 中的错误?

以前有没有人遇到过这样的问题,如果有,有什么解决方法吗?

谢谢,如果你能帮忙。

4

1 回答 1

1

实际上 pdb 位置嵌入在 dll 中。您可以使用找到此路径

dumpbin /headers <your.dll>

要搜索的第一个位置将是在您的 dll 中引用您的位置,如果您在与构建机器相同的机器上运行二进制文件,则会找到它。

请参阅有关 pdbs 的这篇精彩文章 @ http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx

本文末尾提供了一种使用自定义 subst.exe 的解决方法。希望有帮助。

于 2013-02-04T17:01:12.687 回答