標籤:
VS Code調試.NET Core應用遇到的坑為什麼會有”坑“
部落格園裡有好多介紹怎麼使用VS Code以及調試.NET Core的文章,但是都是基於直接構建Asp.Net Core Mvc單項目的,有什麼區別呢!
(1).我們這次遇到的坑是在多項目的解決方案中遇到的,也就是說根目錄不是一個項目的目錄;
(2).DEBUG項目不能載入符號檔案,導致項目不能斷點調試;
解決問題 1.關於解決方案的目錄問題
在launch.json中將 "program" 節點修改下:
"program": "${workspaceRoot}”,workspaceRoot是解決方案目錄,修改這個值為"${workspaceRoot}/子項目目錄/bin/Debug/netcoreapp1.0/<項目名稱>.dll"
修改後,DEBUG發現沒辦法Build, 提示 Couldn‘t find ‘project.json‘ in current directory 。
其實,原因是一樣的都是找不到項目目錄造成的,修改 tasks.json檔案:
為其添加一個options節點:
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", "command": "dotnet", "isShellCommand": true, "args": [], "options": { "cwd": "${workspaceRoot}/子項目目錄" }, "tasks": [ { "taskName": "build", "args": [ ], "isBuildCommand": true, "showOutput": "silent", "problemMatcher": "$msCompile" } ]}
options的cwd節點,指定了dotnet命令列的工作目錄, 這樣修改後就可以正常build了。
2.關於DEBUG不能斷點調試
查看LOG,發現DEBUG時會提示如下資訊:
Could not load symbols for ‘*.dll‘. ‘*.pdb‘ is a Windows PDB. These are not supported by the cross-platform .NET Core debugger.
大概的意思就是在windows下產生的符號檔案,不能被跨平台的調試器載入。
解決方案很簡單,在每個需要調試的專案檔(project.json)中,加入一個節點資訊如下:
"buildOptions": { "debugType": "portable" } project.json
這是YOYOFx開源架構一個項目的project.json片段。
YOYOFx架構
GitHub:https://github.com/maxzhang1985/YOYOFx Star下, 歡迎一起交流。
YOYOFx是一個輕量級用於構建基於 HTTP 的 Web 服務,基於 .NET 和 Mono 平台。
VS Code調試.NET Core