參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

配置 C# 除錯

你可以在 Visual Studio Code 中使用 launch.jsonlaunchSettings.json 或使用者 settings.json 檔案來配置 C# 偵錯程式。

逐步講解:設定命令列引數

在我們深入瞭解所有可能的選項之前,讓我們先了解一個基本場景:為程式設定命令列引數。這些步驟也適用於更新其他基本選項,如環境變數或當前工作目錄。

方法 1:launchSettings.json

對於 C# Dev Kit,推薦的除錯方式是讓 C# Dev Kit 自動從專案檔案中的設定推斷如何除錯。這意味著你沒有 <workspace_root>/.vscode/launch.json 檔案,或者如果有,則活動配置的 "type": "dotnet" 已設定。對於命令列引數,“從專案檔案推斷”意味著從 <Project-Directory>/Properties/launchSettings.json 中提取值。launchSettings.json 的優點是它允許在 Visual Studio Code、完整的 Visual Studio 和 dotnet run 之間共享設定。

在這種情況下,以下是設定命令列引數的步驟

  1. 在工作區資源管理器檢視中,導航到要啟動的專案(.csproj 檔案)的目錄
  2. 如果還沒有 Properties 目錄,請建立它
  3. 如果還沒有 launchSettings.json 檔案,請建立一個,你可以使用以下文字作為示例
  4. commandLineArgs 屬性更改為你想要的命令列引數

launchSettings.json 檔案示例:

{
  "profiles": {
    "MyLaunchProfileName": {
      "commandName": "Project",
      "commandLineArgs": "MyFirstArgument MySecondArgument"
    }
  }
}

方法 2:launch.json

如果你在 VS Code 中使用 coreclrclr 除錯介面卡型別,命令列引數儲存在 <workspace_root>/.vscode/launch.json 中。在這種情況下進行編輯

  1. 開啟 <workspace_root>/.vscode/launch.json
  2. 找到要啟動的 coreclrclr 啟動配置
  3. 編輯 args 屬性。這可以是一個字串,也可以是一個字串陣列

配置 launchSettings.json

透過 C# Dev Kit,你可以將 Visual Studio 中的 launchSettings.json 帶到 Visual Studio Code 中使用

示例

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "https://:59481",
      "sslPort": 44308
    }
  },
  "profiles": {
    "EnvironmentsSample": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://:7152;https://:5105",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "EnvironmentsSample-Staging": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://:7152;https://:5105",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Staging",
        "ASPNETCORE_DETAILEDERRORS": "1",
        "ASPNETCORE_SHUTDOWNTIMEOUTSECONDS": "3"
      }
    },
    "EnvironmentsSample-Production": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://:7152;https://:5105",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Production"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

配置檔案屬性

  • commandLineArgs - 傳遞給執行目標的引數。
  • executablePath - 可執行檔案的絕對或相對路徑。
  • workingDirectory - 設定命令的工作目錄。
  • launchBrowser - 如果應啟動瀏覽器,則設定為 true
  • applicationUrl - 用於配置 Web 伺服器的 URL 列表,以分號分隔。
  • sslPort - 用於網站的 SSL 埠。
  • httpPort - 用於網站的 HTTP 埠。

可配置選項列表

以下是除錯時可能需要更改的常見選項。

PreLaunchTask

preLaunchTask 欄位在除錯程式之前執行 tasks.json 中關聯的 taskName。你可以透過執行 VS Code 命令面板中的命令 Tasks: Configure Tasks Runner 來獲取預設的構建預啟動任務。

這會建立一個執行 dotnet build 的任務。你可以在 VS Code 任務 文件中閱讀更多內容。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json

程式

程式欄位設定為要啟動的應用程式 dll 或 .NET Core 主機可執行檔案的路徑。

此屬性通常採用以下形式:"${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>"。

示例:"${workspaceFolder}/bin/Debug/netcoreapp1.1/MyProject.dll"

其中

  • <target-framework> 是正在除錯的專案所構建的框架。這通常在專案檔案中作為“TargetFramework”屬性找到。
  • <project-name.dll> 是正在除錯的專案的構建輸出 dll 的名稱。這通常與專案檔名相同,但帶有“.dll”副檔名。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ 作為 executablePath

Cwd

目標程序的工作目錄。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ 作為 workingDirectory

Args

這些是將傳遞給程式的引數。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ 作為 commandLineArgs

在入口處停止

如果你需要在目標的入口點停止,可以選擇將 stopAtEntry 設定為“true”。

可用性

  • launch.json ✔️
  • settings.json ✔️ 作為 csharp.debug.stopAtEntry
  • launchSettings.json

啟動 Web 瀏覽器

ASP.NET Core 專案的預設 launch.json 模板(從 C# 擴充套件 v1.20.0 開始)使用以下配置來讓 VS Code 在 ASP.NET 啟動時啟動 Web 瀏覽器

    "serverReadyAction": {
        "action": "openExternally",
        "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
    }

關於這一點

  1. 如果你 希望瀏覽器自動啟動,你可以直接刪除此元素(如果你的 launch.json 包含 launchBrowser 元素,則也刪除它)。

  2. 此模式使用 ASP.NET Core 寫入控制檯的 URL 啟動 Web 瀏覽器。如果你想修改 URL,請參閱指定瀏覽器的 URL。如果目標應用程式在另一臺機器或容器上執行,或者如果 applicationUrl 具有特殊主機名(例如:"applicationUrl": "http://*:1234/"),這可能很有用。

  3. serverReadyAction 是 VS Code 的新功能。它比 C# 擴充套件偵錯程式內建的舊 launchBrowser 功能更受推薦,因為它可以在 C# 擴充套件在遠端機器上執行時工作,它使用為 VS Code 配置的預設瀏覽器,並且它還允許使用指令碼偵錯程式。如果這些功能對你來說都不重要,你可以繼續使用 launchBrowser。如果你想執行特定程式而不是啟動預設瀏覽器,你也可以繼續使用 launchBrowser

  4. 有關 serverReadyAction 的更多文件,請參閱 Visual Studio Code 2019 年 2 月釋出說明

  5. 其工作原理是 VS Code 抓取輸出到控制檯的內容。如果一行與模式匹配,它將針對該模式“捕獲”的 URL 啟動瀏覽器。

    以下是對模式作用的解釋

    • \\b:匹配單詞邊界。請注意,\b 表示單詞邊界,但由於它在 JSON 字串中,所以 \ 需要轉義,因此是 \\b
    • Now listening on::這是一個字串字面量,表示下一個文字必須是 Now listening on:
    • \\s+:匹配一個或多個空格字元。
    • (:這是一個“捕獲組”的開始。它表示要儲存並用於啟動瀏覽器的文字區域。
    • http:字串字面量。
    • s?:字元 s 或什麼都沒有。
    • ://:字串字面量。
    • \\S+:一個或多個非空白字元。
    • ):捕獲組的結束。
  6. 兩種瀏覽器啟動形式都需要 "console": "internalConsole",因為瀏覽器啟動器會抓取目標程序的標準輸出,以瞭解 Web 伺服器何時初始化。

指定瀏覽器的 URL

如果你想忽略控制檯輸出中的 URL,你可以從模式中刪除 (),然後將 uriFormat 設定為你想要啟動的 URL。

示例

    "serverReadyAction": {
        "action": "openExternally",
        "pattern": "\\bNow listening on:\\s+https?://\\S",
        "uriFormat": "https://:1234"
    }

如果你想使用控制檯輸出中的埠號,但不是主機名,你也可以使用類似這樣的內容

    "serverReadyAction": {
        "action": "openExternally",
        "pattern": "\\bNow listening on:\\s+http://\\S+:([0-9]+)",
        "uriFormat": "https://:%s"
    }

事實上,你可以開啟幾乎任何 URL,例如你可以透過這樣做開啟預設的 swagger ui

    "serverReadyAction": {
        "action": "openExternally",
        "pattern": "\\bNow listening on:\\s+http://\\S+:([0-9]+)",
        "uriFormat": "https://:%s/swagger/index.html"
    }

注意 你需要確保你的專案已設定 swaggerui 才能執行此操作。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ 包含 launchBrowserapplicationUrl

環境變數

環境變數可以使用此架構傳遞給你的程式

    "env": {
        "myVariableName":"theValueGoesHere"
    }

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ 作為 environmentVariables

控制檯(終端)視窗

"console" 設定控制目標應用程式啟動到哪個控制檯(終端)視窗。它可以設定為以下任何值 --

  • "internalConsole" (預設):目標程序的控制檯輸入(stdin)和輸出(stdout/stderr)透過 VS Code 除錯控制檯路由。此模式的優點是它允許你在一個地方檢視偵錯程式和目標程式的訊息,這樣你就不會錯過重要訊息或需要來回切換。這對於具有簡單控制檯互動的程式很有用(例如:使用 Console.WriteLine 和/或 Console.ReadLine)。當目標程式需要對控制檯進行完全控制時,例如更改游標位置、使用 Console.ReadKey 進行輸入的程式等,不應使用此模式。有關輸入到控制檯的說明,請參閱下文。
  • "integratedTerminal":目標程序將在VS Code 的整合終端中執行。選擇編輯器下方選項卡組中的終端選項卡以與你的應用程式互動。使用此模式時,預設情況下,在開始除錯時不會顯示除錯控制檯。如果使用 launch.json,可以透過 internalConsoleOptions 進行配置。
  • "externalTerminal":目標程序將在其自己的外部終端中執行。使用此模式時,你需要在 Visual Studio Code 和外部終端視窗之間切換焦點。

可用性

  • launch.json ✔️
  • settings.json ✔️ 作為 csharp.debug.console
  • launchSettings.json

注意csharp.debug.console 設定僅用於使用 dotnet 除錯配置型別啟動的控制檯專案。

在 internalConsole 中向目標程序輸入文字

當使用 internalConsole 時,你可以向 Visual Studio Code 輸入文字,這些文字將從 Console.ReadLine 和其他從 stdin 讀取的類似 API 返回。為此,在程式執行時,在除錯控制檯底部的輸入框中鍵入文字。按 Enter 將文字傳送到目標程序。請注意,如果在程式在偵錯程式下停止時在此框中輸入文字,此文字將被評估為 C# 表示式,而不是傳送到目標程序。

示例

Example of inputting text to the Console to be set to the target process's standard input

launchSettingsProfilelaunchSettingsFilePath

雖然對 launchSettings.json 的完全支援需要使用帶有 "type": "dotnet" 的啟動配置,但 coreclrclr 偵錯程式型別也支援 launchSettings.json 功能的有限子集。這對於希望在 Visual Studio Code 和完整 Visual Studio 中使用相同設定的使用者很有用。

要配置要使用的 launchSettings.json 配置檔案(或阻止其使用),請設定 launchSettingsProfile 選項

    "launchSettingsProfile": "ProfileNameGoesHere"

例如,這將使用此示例 launchSettings.json 檔案中的 myVariableName

{
  "profiles": {
    "ProfileNameGoesHere": {
      "commandName": "Project",
      "environmentVariables": {
        "myVariableName": "theValueGoesHere"
      }
    }
  }
}

如果未指定 launchSettingsProfile,則將使用第一個具有 "commandName": "Project" 的配置檔案。

如果 launchSettingsProfile 設定為 null/空字串,則將忽略 Properties/launchSettings.json

預設情況下,偵錯程式將在 {cwd}/Properties/launchSettings.json 中搜索 launchSettings.json。要自定義此路徑,請設定 launchSettingsFilePath

   "launchSettingsFilePath": "${workspaceFolder}/<Relative-Path-To-Project-Directory/Properties/launchSettings.json"

限制

  1. 僅支援具有 "commandName": "Project" 的配置檔案。
  2. 僅支援 environmentVariablesapplicationUrlcommandLineArgs 屬性
  3. launch.json 中的設定將優先於 launchSettings.json 中的設定,例如,如果 launch.json 中的 args 已設定為非空字串/陣列,則將忽略 launchSettings.json 內容。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json

原始檔對映

你可以透過提供一個使用此形式的對映來選擇性地配置原始檔的開啟方式

    "sourceFileMap": {
        "C:\\foo":"/home/me/foo"
    }

在此示例中

  • C:\foo 是編譯模組(例如:MyCode.dll)時一個或多個原始檔(例如:program.cs)的原始位置。它可以是包含原始檔的目錄,也可以是原始檔的完整路徑(例如:c:\foo\program.cs)。它不需要存在於執行 Visual Studio Code 的計算機上,或者如果你是遠端除錯,則不需要存在於遠端計算機上。偵錯程式從 .pdb(符號)檔案中讀取原始檔的路徑,並使用此對映轉換路徑。
  • /home/me/foo 是 Visual Studio Code 現在可以找到原始檔的路徑。

可用性

  • launch.json ✔️
  • settings.json ✔️ 作為 csharp.debug.sourceFileMap
  • launchSettings.json

僅我的程式碼

你可以透過將 justMyCode 設定為“false”來選擇性地停用它。當你嘗試除錯沒有符號或已最佳化的庫時,應停用“僅我的程式碼”。

    "justMyCode":false

“僅我的程式碼”是一組功能,透過隱藏你可能正在使用的最佳化庫(如 .NET Framework 本身)的一些細節,使你更容易專注於除錯程式碼。此功能最重要的子部分是 --

  • 使用者未處理的異常:在異常即將被框架捕獲之前自動停止偵錯程式
  • 僅我的程式碼單步執行:在單步執行時,如果框架程式碼回撥使用者程式碼,則自動停止。

可用性

  • launch.json ✔️
  • settings.json ✔️ 作為 csharp.debug.justMyCode
  • launchSettings.json

要求精確的源

偵錯程式要求 pdb 和原始碼完全相同。要更改此設定並停用源相同,請新增

    "requireExactSource": false

可用性

  • launch.json ✔️
  • settings.json ✔️ 作為 csharp.debug.requireExactSource
  • launchSettings.json

單步進入屬性和運算子

偵錯程式預設會跳過託管程式碼中的屬性和運算子。在大多數情況下,這提供了更好的除錯體驗。要更改此設定並啟用單步進入屬性或運算子,請新增

    "enableStepFiltering": false

可用性

  • launch.json ✔️
  • settings.json ✔️ 作為 csharp.debug.enableStepFiltering
  • launchSettings.json

日誌記錄

你可以選擇性地啟用或停用應記錄到輸出視窗的訊息。日誌記錄欄位中的標誌是:“exceptions”、“moduleLoad”、“programOutput”、“browserStdOut”和“consoleUsageMessage”。

在“logging.diagnosticsLog”下還有一些高階選項,用於診斷偵錯程式問題。

可用性

  • launch.json ✔️
  • settings.json ✔️ 在 csharp.debug.logging
  • launchSettings.json

PipeTransport

如果你需要偵錯程式使用另一個可執行檔案連線到遠端計算機,以在 VS Code 和 .NET Core 偵錯程式後端 (vsdbg) 之間中繼標準輸入和輸出,則請按照此架構新增 pipeTransport 欄位

    "pipeTransport": {
        "pipeProgram": "ssh",
        "pipeArgs": [ "-T", "ExampleAccount@ExampleTargetComputer" ],
        "debuggerPath": "~/vsdbg/vsdbg",
        "pipeCwd": "${workspaceFolder}",
        "quoteArgs": true
    }

有關管道傳輸的更多資訊,請參閱此處

你可以在此處找到有關為 Windows Subsystem for Linux (WSL) 配置管道傳輸的資訊。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json

作業系統特定配置

如果需要針對每個作業系統更改特定命令,可以使用欄位:“windows”、“osx”或“linux”。你可以替換上述任何欄位以適用於特定作業系統。

停用 JIT 最佳化

.NET 偵錯程式支援以下選項。如果為 true,當最佳化的模組(以 Release 配置編譯的 .dll)載入到目標程序中時,偵錯程式將要求即時編譯器生成停用最佳化的程式碼。此選項預設為 false。

    "suppressJITOptimizations": true

.NET 中最佳化如何工作: 如果你正在嘗試除錯程式碼,那麼程式碼最佳化時會更容易。這是因為當代碼被最佳化時,編譯器和執行時將對發出的 CPU 程式碼進行更改,使其執行得更快,但與原始原始碼的對映不那麼直接。這意味著偵錯程式通常無法告訴你區域性變數的值,並且程式碼單步執行和斷點可能無法按預期工作。

通常,Release 構建配置會建立最佳化程式碼,而 Debug 構建配置則不會。Optimize MSBuild 屬性控制是否告知編譯器最佳化程式碼。

在 .NET 生態系統中,程式碼從源轉換為 CPU 指令分兩步:首先,C# 編譯器將你輸入的文字轉換為稱為 MSIL 的中間二進位制形式,並將其寫入 .dll 檔案。然後,.NET 執行時將此 MSIL 轉換為 CPU 指令。這兩個步驟都可以在一定程度上進行最佳化,但 .NET 執行時執行的第二個步驟執行更重要的最佳化。

此選項的作用:此選項控制當已啟用最佳化編譯的 DLL 載入到目標程序中時會發生什麼。如果此選項為 false(預設值),則當 .NET 執行時將 MSIL 程式碼編譯為 CPU 程式碼時,它會保持最佳化啟用。如果此選項為 true,則偵錯程式會請求停用最佳化。

何時使用此選項:當你從另一個源(例如 NuGet 包)下載 DLL 並希望除錯此 DLL 中的程式碼時,應使用此選項。為了使其正常工作,你還必須找到此 DLL 的符號 (.pdb) 檔案。

如果你只對除錯本地構建的程式碼感興趣,最好將此選項保留為 false,因為在某些情況下,啟用此選項會顯著減慢除錯速度。導致速度變慢的原因有兩個 --

  • 最佳化後的程式碼執行速度更快。如果關閉大量程式碼的最佳化,時間會增加。
  • 如果啟用了“僅我的程式碼”,偵錯程式甚至不會嘗試載入已最佳化 DLL 的符號。查詢符號可能需要很長時間。

此選項的限制:此選項在兩種情況下不起作用

1:在將偵錯程式附加到已執行程序的情況下,此選項對偵錯程式附加時已載入的模組無效。

2:此選項對已預編譯 (ngen'ed) 為本機程式碼的 DLL 無效。但是,你可以透過將環境變數 COMPlus_ReadyToRun 設定為 0 來啟動程序以停用預編譯程式碼的使用。如果你定位的是舊版本的 .NET Core (2.x),則還要將 COMPlus_ZapDisable 設定為 '1'。如果你在偵錯程式下啟動,可以在 launch.json 中新增此設定來配置此項

    "env": {
        "COMPlus_ZapDisable": "1",
        "COMPlus_ReadyToRun": "0"
    }

可用性

  • launch.json ✔️
  • settings.json ✔️ 作為 csharp.debug.suppressJITOptimizations
  • launchSettings.json

符號選項

symbolOptions 元素允許自定義偵錯程式搜尋符號的方式。示例

    "symbolOptions": {
        "searchPaths": [
            "~/src/MyOtherProject/bin/debug",
            "https://my-companies-symbols-server"
        ],
        "searchMicrosoftSymbolServer": true,
        "searchNuGetOrgSymbolServer": true,
        "cachePath": "/symcache",
        "moduleFilter": {
            "mode": "loadAllButExcluded",
            "excludedModules": [ "DoNotLookForThisOne*.dll" ]
        }
    }

屬性

searchPaths:符號伺服器 URL(例如:https://msdl.microsoft.com/download/symbols)或目錄(例如:/build/symbols)的陣列,用於搜尋 .pdb 檔案。除了預設位置(模組旁邊和 .pdb 最初放置的路徑)之外,還將搜尋這些目錄。

searchMicrosoftSymbolServer:如果為 true,則將 Microsoft 符號伺服器 (https://msdl.microsoft.com/download/symbols) 新增到符號搜尋路徑。如果未指定,此選項預設為 false

searchNuGetOrgSymbolServer:如果為 true,則將 Nuget.org 符號伺服器 (https://symbols.nuget.org/download/symbols) 新增到符號搜尋路徑。如果未指定,此選項預設為 false

cachePath:從符號伺服器下載的符號應快取的目錄。如果未指定,在 Windows 上偵錯程式預設為 %TEMP%\\SymbolCache,在 Linux 和 macOS 上偵錯程式預設為 ~/.dotnet/symbolcache

moduleFilter.mode:此值為 "loadAllButExcluded""loadOnlyIncluded"。在 "loadAllButExcluded" 模式下,除非模組在“excludedModules”陣列中,否則偵錯程式會載入所有模組的符號。在 "loadOnlyIncluded" 模式下,除非模組在“includedModules”陣列中,或者透過“includeSymbolsNextToModules”設定包含,否則偵錯程式不會嘗試載入任何模組的符號。

loadAllButExcluded 模式的屬性

moduleFilter.excludedModules:偵錯程式不應載入符號的模組陣列。支援萬用字元(例如:MyCompany.*.dll)。

loadOnlyIncluded 模式的屬性

moduleFilter.includedModules:偵錯程式應載入符號的模組陣列。支援萬用字元(例如:MyCompany.*.dll)。

moduleFilter.includeSymbolsNextToModules:如果為 true,對於不在“includedModules”陣列中的任何模組,偵錯程式仍將檢查模組本身旁邊和啟動可執行檔案旁邊,但不會檢查符號搜尋列表上的路徑。此選項預設為“true”。

可用性

  • launch.json ✔️
  • settings.json ✔️ 在 csharp.debug.symbolOptions
  • launchSettings.json

源連結是一項功能,它使得當你在除錯在另一臺計算機上構建的程式碼(例如來自 NuGet 包的程式碼)時,偵錯程式可以透過從網路下載來自動調出匹配的原始碼。為了實現這一點,你正在除錯的程式碼的 .pdb 檔案包含將 DLL 中的原始檔對映到偵錯程式可以下載的 URL 的資料。有關源連結的更多資訊,請訪問 https://aka.ms/SourceLinkSpec

launch.json 中的 sourceLinkOptions 元素允許透過 URL 自定義源連結行為。它是一個從 URL 到該 URL 的源連結選項的對映。URL 名稱支援萬用字元。目前唯一的自定義是源連結是否為該 URL 啟用,但將來可能會新增更多選項。

示例

    "sourceLinkOptions": {
        "https://raw.githubusercontent.com/*": { "enabled": true },
        "*": { "enabled": false }
    }

此示例啟用 GitHub URL 的源連結,並停用所有其他 URL 的源連結。

此選項的預設值是為所有 URL 啟用源連結。類似地,對於在 sourceLinkOptions 對映中沒有規則的任何 URL,源連結都已啟用。

要停用所有 URL 的源連結,請使用 "sourceLinkOptions": { "*": { "enabled": false } }

如果多個條目涵蓋相同的 URL,則使用更具體的條目(字串長度更長的條目)。

目前,源連結僅適用於無需身份驗證即可訪問的原始檔。因此,例如,偵錯程式可以從 GitHub 上的開源專案下載原始檔,但無法從私有 GitHub 倉庫或 Visual Studio Team Services 下載。

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json

目標架構選項 (macOS M1)

Apple M1 上的 .NET 同時支援 x86_64 和 ARM64。除錯時,偵錯程式附加的程序架構和偵錯程式必須匹配。如果不匹配,可能會導致 Unknown Error: 0x80131c3c

擴充套件嘗試根據 PATH 中 dotnet --info 的輸出解析 targetArchitecture,否則它會嘗試使用與 VS Code 相同的架構。

你可以透過在 launch.json 中設定 targetArchitecture 來覆蓋此行為。

示例

    "targetArchitecture": "arm64"

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json

檢查開發證書

此選項控制啟動時偵錯程式是否應檢查計算機是否具有用於開發執行在 HTTPS 終結點上的 Web 專案的自簽名 HTTPS 證書。為此,它嘗試執行 dotnet dev-certs https --check --trust,如果未找到證書,它將提示使用者建議建立一個。如果使用者批准,擴充套件將執行 dotnet dev-certs https --trust 來建立受信任的自簽名證書。

如果未指定,當 serverReadyAction 設定時,預設為 true。此選項在 Linux、VS Code 遠端和 VS Code for Web 場景中無效。

你可以透過在 launch.json 中將 checkForDevCert 設定為 false 來覆蓋此行為。

示例

    "checkForDevCert": "false"

可用性

  • launch.json ✔️
  • settings.json
  • launchSettings.json ✔️ 作為 useSSL

另請參閱