WebView2 系列之-前端 IDE 调试 WebView2 程序

背景

webview2 通常是本机应用的一个组件,也就是说,代码的目标运行环境是本机应用的webview2 组件,而不是不像开发网站项目,目标运行环境是浏览器。

开发工具

开发 webview2 项目中,通常要开启两个 IDE,一个开发后端(本机应用)、一个开发前端,例如我使用的是 Rider 和 WebStorm。

开发 .NET 本机应用推荐使用 Rider 而不是 Visual Studio 2022,原因是 Rider 能让我们的本机应用正常打开 9222 的远程调试端口。

后端关键代码

后端要先给webview2控件设置环境参数,设置debug模式下开启远程调试端口 9222。

cs 复制代码
#if DEBUG 
var options = new CoreWebView2EnvironmentOptions(language: "zh");
options.AdditionalBrowserArguments = "--remote-debugging-port=9222";//开启调试
#endif         
var env = await CoreWebView2Environment.CreateAsync(null, userDataFolder, options);

添加注册表

在如下注册表路径HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments,在AdditionalBrowserArguments 右键新建一个字符串值 * ,他的值为--remote-debugging-port=9222。 设置完的结果如下图所示。

前端调试配置

前端 IDE 可以是 webstorm,也可以是 vscode.

webstorm 配置

按下图顺序,添加一个调试配置,选择附加到Node.js/Chrome,注意主机填前端项目 dev 的地址,端口号是前面配置的远程调试端口9222。

vscode 配置

vscode 点击左侧调试按钮,创建一个配置文件 launch.json 内容如下:

json 复制代码
{
  // 使用 IntelliSense 了解相关属性。 
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "msedge",
      "port": 9222, 
      "request": "attach",
      "name": "debug webview2",
      // "runtimeExecutable": "D:\Code\DotNet\2024\Wpf-Webview2-Template\Wpf-Webview2-Template\bin\Debug\net6.0-windows/Wpf-Webview2-Template.exe",
      // "useWebView": true,
      "url": "http://localhost:5173",
      "webRoot": "${workspaceFolder}/src"
    }
  ]
}

此 json 配置内容可以参考微软文档:使用 Visual Studio Code 调试 WebView2 应用 - Microsoft Edge Developer documentation | Microsoft Learn

注释部分是用于启动webview2程序的路径,用于"request"设置为"launch"模式时使用,此模式允许 VScode 启动编译好的 wpf + webview2 程序。

但是实测,遇到需要管理员权限的 wpf + webview2 程序,vscode 无法正常启动。因此推荐使用"attach"附加模式。

什么是附加调试

附加调试模式的意思就是先启动开启了远程调试端口的wpf程序,IDE 会把调试器附加到它上面。

调试

调试用 webstorm 演示。

启动 WPF 程序,启动前端程序,然后点击 debug 按钮

在需要调试的代码左侧打上断点,在前端页面执行操作。

可以看到,webstorm 中已经捕获了断点,接下来方便地调试代码了。

webstorm 可以直接查看控制台等调试数据

相关推荐
念何架构之路3 分钟前
zap扩展生态与总结
java·前端·数据库
独孤九剑打醒他18 分钟前
【原创开源】【概念设计】源 - 栅 - 漏 - 栅 - 源 横向双栅 MOS,低压交流多值逻辑芯片探索
前端·其他·架构·开源·硬件工程
mantou1321 小时前
我给 AI Agent 做了个「油猴」:让 Claude Code / Codex 直接用你已登录的浏览器
前端·javascript·后端
默_笙1 小时前
🍕 一个主编、三个工种、两本手册:搭一支 AI 调研队
前端·javascript
纸片人1 小时前
Blender 建模 + Three.js 展示:和 AI 一起做一个光储充超充站数字孪生大屏
前端
智能直播1 小时前
网络RTMP拉流不卡顿、声音不同步?一文讲透缓冲区、时间戳与MEDAI V2实战调优
前端
第七页独白1 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
纸片人1 小时前
只用 three.js + OpenStreetMap,手搓一个「成都城市 3D」数据大屏
前端
星若生辉1 小时前
Hugo 静态站点搭建|从本地调试到上线部署实操指南
前端
沐浴露z1 小时前
Agent 响应延迟过高?从工具治理角度提供两条思路
前端·网络