先說一下我遇到問題,我的項目是NET8.0版本,在VisualStudio上可以正常運行與調試,但是在VSCode里可以正常跑但無論怎麼打斷點都不會進去,提示"還沒有為該文檔載入任何符號"。 其實最開始我以為是launch.json沒有配置好,搞了一上午換了很多種配置方式結果都沒有變。其中我創建新的 ...
先說一下我遇到問題,我的項目是NET8.0版本,在VisualStudio上可以正常運行與調試,但是在VSCode里可以正常跑但無論怎麼打斷點都不會進去,提示"還沒有為該文檔載入任何符號"。
其實最開始我以為是launch.json沒有配置好,搞了一上午換了很多種配置方式結果都沒有變。其中我創建新的net webapi項目運行起來斷點也沒問題,還跑了另一個正在開發的項目也沒問題。最終確定問題可能出在啟動項目的.csproj文件里,最後找到了問題所在——
DebugType 無、pdbonly、嵌入、可移植、或完整,從C#6開始pdbonly與full相同。這個設置成portable就行了,最後我附上ai對這個欄位的解釋
Q:vscode中 .csproj的DebugType為full 調試無效 改為portable就可以了
A:
如果您在使用 Visual Studio Code (VSCode) 進行 .NET Core 或 .NET 5/6+ 項目開發時遇到 DebugType
設為 full
時調試無效,而改為 portable
後調試正常的情況,這可能是由以下幾個原因造成的:
-
C# 擴展不相容:確保您安裝的 OmniSharp 或 C# 擴展與您的 SDK 版本相容。有時候擴展沒有及時更新可能會導致與特定版本的調試信息不相容。
-
SDK 行為變化:隨著 .NET SDK 的更新,處理調試信息的方式可能會有所改變。在某些情況下,預設的
DebugType
可能已經變為portable
,而舊的工具鏈可能仍然期望full
類型的 PDB 文件。 -
調試配置問題:VSCode 的調試配置可能對
portable
PDB 文件有特定的支持,而對full
PDB 文件支持不夠完善。檢查您的launch.json
調試配置文件是否需要針對不同的DebugType
做出調整。 -
符號載入問題:在某些情況下,即使生成了
full
類型的 PDB 文件,調試器也可能無法正確載入符號。這可能是因為路徑問題、符號緩存問題或其他配置問題。 -
平臺差異:如果您在不同的操作系統上進行開發,可能會發現某些 PDB 類型在不同平臺上的表現不一致。
以下是一些可能的解決步驟:
-
更新擴展:確保 VSCode 中的 C# 擴展(OmniSharp)是最新的。
-
檢查 SDK 版本:確認您的 .NET SDK 和目標框架與您的開發環境和工具鏈相容。
-
更改調試設置:嘗試在
launch.json
中添加或修改"symbolLoadInfo"
設置,如下所示:{ "version": "0.2.0", "configurations": [ { "name": ".NET Core Launch (web)", "type": "coreclr", "request": "launch", // ... 其他配置 ... "symbolLoadInfo": { "loadAll": true, "requireModuleFiles": false, "searchPaths": [] } } ] }
-
清理並重新生成解決方案:刪除 bin 和 obj 文件夾中的內容,然後重新編譯項目以確保生成最新的調試信息。
最後,如果將 DebugType
從 full
更改為 portable
解決了問題,那麼您可以選擇繼續使用 portable
,同時留意是否有更新或補丁來解決 full
類型的調試問題。由於 portable
PDB 提供了好處的可移植性,並且通常在現代開發環境中能提供足夠的調試信息,因此對於許多開發場景來說,這是一個合理的選擇。