首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

Visual Studio 2010 整合 ASP.NET MVC 原始碼進行偵錯設定指南

     編輯:關於ASP.NET

在開發 ASP.NET MVC 應用程式時,遇到 ViewData、TempData 等框架內部行為難以理解時,直接單步進入 MVC 原始碼偵錯是最有效的診斷方式。本文說明如何在 Visual Studio 2010 中設定符號與原始碼伺服器,實現無縫偵錯體驗。

前置需求

  • Visual Studio 2010(Professional 以上版本)
  • 網路連線(下載符號檔與原始碼)
  • 專案目標框架為 .NET 4.0

步驟 1:設定偵錯選項

  1. 開啟 Tools → Options → Debugging → General
  2. 勾選以下關鍵選項:
    • Enable .NET Framework source stepping(啟用 .NET Framework 原始碼單步執行)
    • Enable source server support(啟用原始碼伺服器支援)
    • Require source files to exactly match the original version(要求原始碼檔案完全符合原版本)
  3. 取消勾選 Enable Just My Code(僅啟用我的程式碼),否則偵錯器會略過框架程式碼

偵錯選項設定畫面

步驟 2:設定符號檔下載位置

  1. 在同一視窗的 Symbols 分頁
  2. 新增符號檔位置:https://referencesource.microsoft.com/symbols
  3. 指定本地快取目錄(如 C:\SymbolsCache),避免重複下載
  4. 勾選 Load all symbols 或僅載入指定模組(建議僅載入 System.Web.Mvc* 相關模組以提升啟動速度)

符號檔設定畫面

步驟 3:啟動偵錯並進入 MVC 原始碼

  1. 在專案中設定中斷點(如 Controller Action 內部)
  2. 按 F5 啟動偵錯
  3. 執行至中斷點時,開啟 Call Stack 視窗(Ctrl+Alt+C)
  4. 在呼叫堆疊中找到 MVC 框架方法(如 Controller.ExecuteCore、ViewResult.ExecuteResult)
  5. 右鍵選擇 Load Symbols → 系統自動下載 PDB 並顯示原始碼
  6. 按 F11 (Step Into) 即可進入 MVC 原始碼內部邏輯

常見問題與解決方案

  • 專案參考的 MVC 版本與符號檔版本不符
  • 未安裝對應版本的 MVC 原始碼
  • 問題原因解決方式
    無法載入符號 / 顯示「原始碼不符合」
  • 確認專案參考 System.Web.Mvc.dll 版本號
  • 從 NuGet 安裝對應版本的 Microsoft.AspNet.Mvc.Source 套件
  • 或直接從 CodePlex/GitHub 下載對應版本原始碼專案加入方案參考
  • 偵錯啟動極慢 載入所有模組符號檔 僅勾選 System.Web.Mvc*、System.Web.Routing* 等必要模組
    斷點無法命中 PDB 與 DLL 不匹配 / 優化編譯 確認 web.config 中 <compilation debug="true">;清除方案重建

    進階技巧:離線原始碼偵錯

    若離線環境無法連線微軟符號伺服器:

    1. 從 ASP.NET Web Stack GitHub 下載對應版本原始碼
    2. 以原始碼專案方式加入方案(Add Existing Project)
    3. 移除專案對 System.Web.Mvc.dll 的二進位參考,改參考原始碼專案
    4. 直接對原始碼專案設定中斷點,享受完整 IntelliSense 與偵錯體驗

    補充:ScottGu 推薦資源

    Scott Guthrie 推薦的 Stepping into ASP.NET MVC Source Code 文章提供更多版本對應與疑難排解細節。

    總結

    透過設定符號伺服器與原始碼單步執行,開發者能深入掌握 MVC 管線運作細節(如 Model Binding、Filter Pipeline、View Engine 解析流程),大幅提升除錯效率與框架理解深度。建議團隊建立共用符號快取目錄,加速團隊成員首次設定速度。

    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved