現已釋出!閱讀關於 11 月新增功能和修復的內容。

配置 C# 除錯

您可以透過 launch.jsonlaunchSettings.json 或您的使用者 settings.json 檔案在 Visual Studio Code 中配置 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 - 以分號分隔的 URL 列表,用於配置 Web 伺服器。
  • sslPort - 用於 Web 站點的 SSL 埠。
  • httpPort - 用於 Web 站點的 HTTP 埠。

可配置選項列表

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

PreLaunchTask

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

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

可用性

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

Program

程式欄位設定為要啟動的應用程式 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

Stop at Entry

如果您需要在目標的入口點停止,您可以選擇將 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 設定為您想要啟動的內容。

示例

    "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 包)下載了 dlls 並且想要除錯此 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 包的程式碼)時,偵錯程式可以自動透過從 Web 下載來調出匹配的原始碼。為了實現此功能,您正在除錯的程式碼的 .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

檢查 DevCert

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

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

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

示例

    "checkForDevCert": "false"

可用性

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

另請參閱

© . This site is unofficial and not affiliated with Microsoft.