Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Msbuild Visual Studio调试器将仅从中间目录加载符号_Msbuild_Pdb - Fatal编程技术网

Msbuild Visual Studio调试器将仅从中间目录加载符号

Msbuild Visual Studio调试器将仅从中间目录加载符号,msbuild,pdb,Msbuild,Pdb,我有一个使用MSBuild构建的Visual Studio类库DLL,在调试配置中使用它时,它会将DLL、PDB和各种资源文件复制到web应用程序中。我遇到的问题是,当我调试web应用程序时,Visual Studio 2010调试器将只加载PDB文件中的符号,该文件在生成过程中创建的中间目录中留下。即使我在VS中指定符号位置以将文件夹包含在web应用程序中,这也总是被忽略,并且VS总是直接转到中间位置,这显然是硬编码到DLL中的。这里所说的中间目录是指可以在MSBuild中使用BaseInte

我有一个使用MSBuild构建的Visual Studio类库DLL,在调试配置中使用它时,它会将DLL、PDB和各种资源文件复制到web应用程序中。我遇到的问题是,当我调试web应用程序时,Visual Studio 2010调试器将只加载PDB文件中的符号,该文件在生成过程中创建的中间目录中留下。即使我在VS中指定符号位置以将文件夹包含在web应用程序中,这也总是被忽略,并且VS总是直接转到中间位置,这显然是硬编码到DLL中的。这里所说的中间目录是指可以在MSBuild中使用BaseIntermediateOutPath属性设置的文件夹,如果未明确包含此设置,则默认为创建obj文件夹

为什么VisualStudio2010调试器会这样做?我在项目属性中的任何位置都看不到对obj文件夹的任何合法引用。在尝试配置远程调试器设置时,这给我带来了很大的困难。是否有任何方法可以覆盖此行为,或者VS 2010中存在bug

以前有人遇到过这样的问题吗?如果有,是否有解决办法

谢谢您的帮助。

实际上,pdb位置已嵌入到dll中。您可以使用

dumpbin /headers <your.dll>
dumpbin/headers
要搜索的第一个位置将是dll中引用给您的位置,如果您在与生成计算机相同的计算机上运行二进制文件,则会找到该位置

请参阅pdbs上的这篇精彩文章@

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