“无可用源” – Visual Studio调试(即使已加载符号)

我已经设置了Visual Studio 2012 Professional来下载调试符号。 它设置正确,符号已下载。

我进入了我想要介入的代码行:

bool result = Membership.ValidateUser("user", "password"); 

我右键单击它并选择step into specific-->Membership.ValidateUser()

然后在Visual Studio中打开一个选项卡说:

无可用来源 – 当前位置没有可用的源代码

Membership.ValidateUser()位于System.Web.Security中的System.Web.Security命名空间中。 如果我打开模块窗口,我可以清楚地看到已经下载了该程序集的符号。

如果符号在那里,为什么我无法进入源代码?

源步进仅适用于RTM或SP版本。 请参阅.NET Framework 3.5 SP1的PDB文件不可用! (即System.Web.pdb 2.0.50727.4016)

你可能有符号,但你没有源代码。 PDB不足以进行调试,但它们必须将源代码与可执行文件链接起来。 PDB很好地报告错误,因为它们提供了调用堆栈的详细信息,但为了调试,您需要拥有源代码。

我遇到了类似的问题,这就是我解决它的方法。

右键单击您的项目 – >属性 – >编译 – >高级编译选项…

然后从下拉菜单中将“生成调试信息”设置为“完整”。

希望有所帮助。

我遇到了同样的问题,在我的情况下它是版本4.0而不是4.5,但仍然是同样的问题。

在使用fiddler检查后,对于许多DLL文件,似乎referenceserver.microsoft.com上的服务器返回404,然后Visual Studio退回并从msdl.microsoft.com上的Microsoft符号服务器下载,该服务器不包含实际的源代码。

因此,在一天结束时,使用Microsoft代码的源代码似乎并不总是有效,并且人们可能会使用.NET Reflector 。

我刚刚发现了另一个Stack Overflow的答案, 尽管设置了选项.NET框架源步进仍无法正常工作 ,根据它,问题可能与SP1有关。