使用 Visual Studio 對 .NET 和 ASP.NET Core 原始程式碼進行偵錯

若要在 Visual Studio 對 .NET 和 ASP.NET Core 原始程式碼進行偵錯:

  • [工具 -> 選項 -> 偵錯 -> 一般] 中,取消核取 [啟用 Just My Code]

    Enable Just My Code

  • 確認已核取 [啟用來源連結支援]

    Enable Source Link support

  • [工具 -> 選項 -> 偵錯 ->符號] 中,啟用 [Microsoft 符號伺服器]。

    Microsoft Symbol Server

逐步執行任何 .NET 或 ASP.NET Core 程式碼時,Visual Studio 會顯示原始程式碼。 例如:

  • Pages/Privacy.cshtml.cs 中設定 OnGet 中斷點,然後選取 Privacy 連結。

  • 選取其中一個 [下載來源] 和 [繼續偵錯] 選項。

    Source Link Will Download

上述指示適用於基本逐步執行函式,但最佳化的 .NET 程式碼通常會移除區域變數和函式。 若要停用最佳化,並改善來源偵錯:

  • [工具 - 選項 ->> 偵錯 -> 一般] 中,在模組載入上啟用 [隱藏 JIT 最佳化] (僅限受控)Suppress JIT optimization on module load
  • 將環境變數和值 COMPlus_ReadyToRun=0 新增至 Properties/launchSettings.json 檔案:
    {
      "iisSettings": {
        "windowsAuthentication": false,
        "anonymousAuthentication": true,
        "iisExpress": {
          "applicationUrl": "http://localhost:10892",
          "sslPort": 44315
        }
      },
      "profiles": {
        "WebApplication18": {
          "commandName": "Project",
          "dotnetRunMessages": true,
          "launchBrowser": true,
          "applicationUrl": "https://localhost:7045;http://localhost:5045",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development",
            "COMPlus_ReadyToRun": "0"
          }
        },
        "IIS Express": {
          "commandName": "IISExpress",
          "launchBrowser": true,
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development",
            "COMPlus_ReadyToRun": "0"
          }
        }
      }
    }
    

如果您先前已使用舊版 .NET 對應用程式進行偵錯,請刪除 %TEMP%/SymbolCache 目錄,因為其中可能有過時的舊 PDB 檔案。

透過 SSH 對 Unix 上的 .NET Core 進行偵錯

其他資源