2012-03-23 139 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

我有類似的問題,這就是我解決它的方法。

右鍵點擊你的項目 - >屬性 - >編譯 - >高級編譯選項...

然後設置「生成調試信息」,從下拉菜單「全部」。

希望有所幫助。

相關問題