Visual Studio忽略输出文件夹中的PDB文件

时间:2017-02-07 22:06:14

标签: c# debugging visual-studio-2015 pdb-files

我正在尝试使用VS2015调试我通过nuget包消耗的C#代码。该软件包包含以下结构中DLL的DLL,PDB和源代码(由Nuget文档建议):

> lib
    > portable.etc.etc
        > x.dll
        > x.pdb
> src
    > *.cs
    > **/*.cs (etc.)
> x.nupkg

在我的应用程序的bin / Debug文件夹中,我可以看到用DLL复制的.pdb文件。根据我的理解(关于Visual Studio的调试器的文档),调试器应该与DLL的相同名称(或匹配的哈希)看起来与DLL相同。

当我使用此配置设置断点并尝试单步进入nuget包的代码时,会打开一个文件资源管理器,要求我查找源文件。如果我选择了nuget包附带的源文件,我可以设置断点,但调试器永远不会停止。因此,在我看来,PDB根本没有被使用。

在Debug中编译耗材程序,nuget包也是在Debug配置中构建的。

Enable Just My Code未经检查。

如何让Visual Studio使用nuget包中的PDB?

-----------更新-------------------

在修复了VS中默认设置的一些古怪配置后,使用bin / Debug中的PDB。 (地址级调试关闭)。但是,它仍然让我在文件资源管理器中搜索源文件。 VS是否无法自动打开该源文件,或者手动打开文件是我的nuget包消费者必须承担的负担? 为了澄清,PDB正在自动加载。我想自动加载VS而不是让我在文件浏览器中手动查找的C#源文件。

2 个答案:

答案 0 :(得分:3)

您需要确保拥有"启用我的代码"未选中以逐步执行第三方.pdb文件。

  

转到:工具 - >选项 - >调试 - >取消选中"启用我的代码"

它将从pdb中读取源信息(如果可用)并匹配。 pdb文件应该与相应的dll文件匹配才能正常工作,这意味着来自同一个构建。

enter image description here

答案 1 :(得分:2)

尝试在调试设置中禁用我的代码,然后在Debug中导航 - >窗口 - >外部包的模块和加载符号