深入淺出Blazor webassembly之vs code 環(huán)境設(shè)置過(guò)程
1. 安裝了最新的 dot net SDK 6, 應(yīng)該是exe 安裝版, 不要zip版, 安裝版會(huì)自動(dòng)注冊(cè)一些信息, 省去后面的很多麻煩.
設(shè)置OS環(huán)境變量, 并重啟計(jì)算機(jī).
(1) 將 dotnet.exe 路徑加到OS的Path 環(huán)境變量中.
(2) 設(shè)置 DOTNET_ROOT 環(huán)境變量, 取值為 C:\Program Files\dotnet\
(3) 設(shè)置 NUGET_PACKAGES 環(huán)境變量, 用于存放nuget 下載包的路徑, 默認(rèn)為 %userprofile%\.nuget\packages
2. 為 VS code 安裝 C#插件(即 omnisharp-vscode), 需要在 v1.25 及以上版本.
VS code 插件 marketplace 可能沒有最新的版本, 可以直接到github下載, 地址: https://github.com/OmniSharp/omnisharp-vscode/releases
3. 離線安裝C# 插件的依賴包(可選步驟)
C# 擴(kuò)展安裝后, 一般會(huì)自動(dòng)安裝它的幾個(gè)依賴包(debugger/Razor), 企業(yè)內(nèi)部如果防火墻可能自動(dòng)安裝會(huì)失敗, 可以使用離線安裝方式,
依賴下載地址見該插件的package.json文件: C:\Users\dorothy\.vscode\extensions\ms-dotnettools.csharp-1.25.0-win32-x64\package.json
離線安裝參考 https://blog.csdn.net/maozi_bsz/article/details/101610721
4. omnisharp 插件的配置
omnisharp 1.24之后, 對(duì)于dotnet core項(xiàng)目, 推薦 useModernNet 設(shè)置為 true.
老版omnisharp server 的進(jìn)程為 omnisharp.exe, 新版進(jìn)程為 dotnet.exe,
老版 omnisharp 會(huì)打包帶 msbuild 工具, 新版需要使用 SDK 中的 msbuild,
直接修改vs code 的 settings 文件, 路徑C:\Users\dorothy\AppData\Roaming\Code\User\settings.json
"omnisharp.useModernNet": true, //"omnisharp.enableDecompilationSupport": true, //"omnisharp.path": "latest",//設(shè)置latest會(huì)自動(dòng)下載最新版omnisharp "omnisharp.autoStart": true, "omnisharp.enableImportCompletion": true,
5. omnisharp 內(nèi)部的配置(可選步驟)
(1) 新建 C:\Users\{username}\.omnisharp\omnisharp.json 文件
(2) 編輯文件內(nèi)容如下, 注意替換真實(shí)的路徑
更多設(shè)置參考 https://github.com/OmniSharp/omnisharp-roslyn/wiki/Configuration-Options
{
"RoslynExtensionsOptions": { "documentAnalysisTimeoutMs": 30000, "enableDecompilationSupport": true, "enableImportCompletion": true, "enableAnalyzersSupport": true, "diagnosticWorkersThreadCount": 8, "inlayHintsOptions": { "enableForParameters": true, "forLiteralParameters": true, "forIndexerParameters": true, "forObjectCreationParameters": true, "forOtherParameters": true, "suppressForParametersThatDifferOnlyBySuffix": false, "suppressForParametersThatMatchMethodIntent": false, "suppressForParametersThatMatchArgumentName": false, "enableForTypes": true, "forImplicitVariableTypes": true, "forLambdaParameterTypes": true, "forImplicitObjectCreation": true } }
}
6. 建立了blazor wasm 模版項(xiàng)目, 能正常運(yùn)行起來(lái).
4. 但發(fā)現(xiàn)VS code 的 intellicode 功能失效, 比如代碼導(dǎo)航功能不能使用,
可以在VS code 輸出面板中查看一下OmniSharp log, 看看日志.
也可以試試重啟omnisharp, 通過(guò) Ctrl+shift+P, 執(zhí)行 restart omnisharp

6. VS code 仍然報(bào) Error Acquisition .Net 錯(cuò)誤 , 這個(gè)沒有找到解決方案, 但不影響調(diào)試運(yùn)行, 不用管它
7. 在瀏覽器端調(diào)試 Blazor 程序
步驟1: 在VS code或VS 的 debug 模式下編譯的 blazor 可以支持瀏覽器端調(diào)試, 在Release 模式下編譯將不支持調(diào)試. 注意, 這里是指編譯模式, 并不要求VS code/VS以debug 方式運(yùn)行.
步驟2. 使用下面命令啟動(dòng) chrome 或edge 瀏覽器(不能使用firefox) , 下面的9222 端口是固定的, 5000端口是我們網(wǎng)站的端口號(hào), 命令行如下:
msedge --remote-debugging-port=9222 http://localhost:5000/
chrome --remote-debugging-port=9222 http://localhost:5000/
使用上面命令后, 瀏覽器開啟9222 遠(yuǎn)程調(diào)試端口, vscode為 blazor 項(xiàng)目已經(jīng)實(shí)現(xiàn)了chrome devtools protocol 協(xié)議, 瀏覽器和blazor項(xiàng)目可以通過(guò)web socket進(jìn)行通訊,
步驟3: 在瀏覽器中, 使用 Shift+Alt+D 將進(jìn)入一個(gè)專門的 devtools 界面.
在 devtools 的sources tab頁(yè)下, 找到 file:// 節(jié)點(diǎn)下會(huì)顯示 razor 和 C# 源碼, 還可以設(shè)置斷點(diǎn), 可以watch 變量.



8. 在VS code 端調(diào)試代碼 (未成功),
步驟1: 首先安裝 blazorWasm 調(diào)試插件

步驟2: 按 F5 快捷鍵, VS code自動(dòng)為項(xiàng)目創(chuàng)建 .vscode/launch.json 文件, 需要確保 .vscode 在項(xiàng)目的第一層下.
launch.json文件內(nèi)容為:
{ "version": "0.2.0", "configurations": [ { "type": "blazorwasm", "name": "Launch Blazor WebAssembly", "request": "launch", "cwd": "${workspaceFolder}" } ] }
VS code 重新打開blazorDemo1 項(xiàng)目, 按F5 就能將 .vscode 目錄建在blazorDemo1 項(xiàng)目之下, 可以看出調(diào)試進(jìn)程全部啟動(dòng)成功.
但比較悲劇的是, 在VS code中不管如何設(shè)置斷點(diǎn), 都不能在斷點(diǎn)處停下來(lái).
如需要研究, 可以參考下面的文章:
https://dev.to/sacantrell/vs-code-and-blazor-wasm-debug-with-hot-reload-5317
https://github.com/baileys-am/blazorwasm

浙公網(wǎng)安備 33010602011771號(hào)