2012-03-23 108 views
3

我已经设置了Visual Studio 2012 Professional来下载调试符号。它被正确设置并且符号已经下载。“No Source Available” - Visual Studio调试(即使符号已经加载)

我得到的代码,我想踏进行:

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

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

然后一个标签在Visual Studio中打开说:

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

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

如果符号存在,为什么我无法步入源代码?

+1

请参阅[本](http://blogs.msdn.com/b/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx) 。向下滚动到“FAQ/TROUBLESHOOTING”并查看第3步。 – Lander 2012-03-23 17:51:07

+0

感谢Lander,我尝试了这一步,但它尚未解决问题。 – 2012-03-23 18:16:40

回答

2
+0

嗨理查德,我试图打开通过将光标放在方法调用上并按下F12来定义源类的定义,我不会让我设置任何断点。你是指闯入源代码是什么意思?我该怎么做?我刚才右键点击方法并选择“step into specific”,并且调用堆栈中的所有框架都已经加载了它们的符号,无灰色显示,如果右键单击“加载符号”在菜单中显示为灰色,您提到的其他设置我已经有了。 – 2012-03-23 18:58:50

+0

我不认为这是问题,因为.NET 4.0早已发布。事实上,他们正准备发布4.5而且我已经确定,我正在成功下载与我的.net版本匹配的System.Web.pdb文件,由于某些原因,它没有进入源代码。 – 2012-03-23 19:05:08

+0

@ FunkyFresh84我认为你只需要检查System.Web.dll是否被修补/修复。 – 2012-03-23 19:06:44

2

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

+0

当然,如果我有.NET框架4.0,那么我应该有源代码作为System.Web.dll的一部分。净 - 为什么VS不能看到源代码,我该如何解决这个问题? – 2012-03-23 18:15:27

+1

System.Web.dll只是编译后的代码。你需要从System.Web获得.cs ou .vb文件 – Adauto 2012-03-23 21:23:12

+0

@Adauto抱歉,但你错了。这是符号的用途。该dll被拆开,这些符号可以看到方法的名称等。 – 2012-03-24 00:12:04

1

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

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

因此,在一天结束时,使用微软代码进行源代码似乎并不总是奏效,并且可能会诉诸于使用.NET Reflector

我刚刚发现另一个堆栈溢出的答案,.NET framework source stepping not working despite options set,并根据它的问题可能与SP1有关。

1

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

右键点击你的项目 - >属性 - >编译 - >高级编译选项...

然后设置“生成调试信息”,从下拉菜单“全部”。

希望有所帮助。

相关问题