0

0

C# WebView2集成方法 C#如何在WPF和WinForms中嵌入现代浏览器

畫卷琴夢

畫卷琴夢

发布时间:2026-03-17 10:39:39

|

837人浏览过

|

来源于php中文网

原创

WebView2 运行前必须安装 WebView2 Runtime 或 Edge 浏览器;它不自带渲染引擎,依赖系统级 Microsoft Edge WebView2 Runtime 或已安装的 Edge(Chromium 内核),否则抛出 CoreWebView2InitializationException。

c# webview2集成方法 c#如何在wpf和winforms中嵌入现代浏览器

WebView2 运行前必须安装 WebView2 Runtime 或 Edge 浏览器

WebView2 不自带渲染引擎,它依赖系统级的 Microsoft Edge WebView2 Runtime(或已安装的 Edge 浏览器)。如果目标机器没装 Edge(Chromium 内核)或未单独安装 MicrosoftEdgeWebView2RuntimeCoreWebView2InitializationException 会直接抛出,且错误信息常被误读为“控件初始化失败”。

实操建议:

  • 开发时在项目中引用 Microsoft.Web.WebView2 NuGet 包(推荐最新稳定版,如 1.0.2920.47 及以上)
  • 部署时优先引导用户安装离线 Runtime:从 WebView2 官方下载页 获取 WebView2RuntimeInstaller.exe,静默安装命令为:WebView2RuntimeInstaller.exe /silent /install
  • 代码中应捕获初始化异常,并提示明确信息,例如检查 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Microsoft\EdgeWebView" 是否存在可用运行时版本

WPF 中用 WebView2 控件需启用 WebView2 的预发布支持(.NET 6+)

.NET 6 起,WPF 原生支持 WebView2 控件(Microsoft.Web.WebView2.Wpf.WebView2),但需确认项目 SDK 和目标框架匹配。常见问题是:明明装了包,XAML 里却报 The tag 'WebView2' does not exist in XML namespace

原因和解决:

  • 确保项目文件使用 <Project Sdk="Microsoft.NET.Sdk">(而非旧式 csproj 格式)
  • TargetFramework 必须为 net6.0-windows 或更高(如 net8.0-windows),且含 -windows 后缀——这是 WPF 桌面 API 的必要标识
  • XAML 命名空间要写对:xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
  • 首次加载前必须调用 EnsureCoreWebView2Async(),否则 Source 赋值无效;建议在 Loaded 事件中执行,而非构造函数

WinForms 中初始化 WebView2 必须手动创建 CoreWebView2Environment

WinForms 的 WebView2 控件(Microsoft.Web.WebView2.WinForms.WebView2)不自动推导运行时路径,尤其在自定义缓存目录或需要指定 Edge 安装路径时,容易卡在空白页或报 HRESULT: 0x80070002(找不到文件)。

HIX Translate
HIX Translate

由 ChatGPT 提供支持的智能AI翻译器

下载

关键步骤:

  • 不要直接 new 控件后就设 Source;先 await EnsureCoreWebView2Async(),但该方法内部需已有环境上下文
  • 推荐显式创建环境:var env = await CoreWebView2Environment.CreateAsync(browserExecutableDir: @"C:\Program Files\Microsoft\Edge\Application"),再传入 InitializeAsync(env)
  • 若想复用用户 Edge 的个人资料(如保存 Cookie),可传入 userDataFolder 参数指向一个可写的本地路径,例如:Path.Combine(Application.LocalUserAppDataPath, "WebView2UserData")
  • 注意:WinForms 控件的 CoreWebView2InitializationCompleted 事件比 Initialized 更可靠,前者保证 CoreWebView2 已就绪,后者可能在失败时也触发

调试 WebView2 页面时,DevTools 不会自动弹出,得手动启用

很多开发者以为右键“检查元素”能唤出 DevTools,但 WebView2 默认禁用该功能。页面出错时看不到 console 日志,JS 断点也无法下,排查效率骤降。

启用方式分两种场景:

  • 开发阶段:在初始化完成后调用 webView.CoreWebView2.OpenDevToolsWindow()(WPF/WinForms 均支持),可绑定到某个快捷键或按钮
  • 发布阶段:通过启动参数控制,例如在 CreateAsync() 时传入 additionalBrowserArguments: "--remote-debugging-port=9222",然后用 Chrome 访问 http://localhost:9222
  • 注意:DevTools 窗口是独立进程,关闭它不会影响 WebView2 主体;但若在调试中刷新页面,需重新打开 DevTools 才能捕获新上下文

真正麻烦的是跨进程通信场景——比如用 CoreWebView2.AddWebMessageReceivedHandler() 接收 JS 消息时,若 JS 抛了异常没 catch,错误不会透出到 C# 层,只能靠 DevTools 的 Console 面板发现。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

1083

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

852

2023.11.06

edge是什么浏览器
edge是什么浏览器

Edge是一款由Microsoft开发的网页浏览器,是Windows 10操作系统中默认的浏览器,其目标是提供更快、更安全、更现代化的浏览器体验。本专题为大家提供edge浏览器相关的文章、下载、课程内容,供大家免费下载体验。

1754

2023.08.21

IE浏览器自动跳转EDGE如何恢复
IE浏览器自动跳转EDGE如何恢复

ie浏览器自动跳转edge的解决办法:1、更改默认浏览器设置;2、阻止edge浏览器的自动跳转;3、更改超链接的默认打开方式;4、禁用“快速网页查看器”;5、卸载edge浏览器;6、检查第三方插件或应用程序等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

398

2024.03.05

如何解决Edge打开但没有标题的问题
如何解决Edge打开但没有标题的问题

若 Microsoft Edge 浏览器打开后无标题(窗口空白或标题栏缺失),可尝试以下方法解决: 重启 Edge:关闭所有窗口,重新启动浏览器。 重置窗口布局:右击任务栏 Edge 图标 → 选择「最大化」或「还原」。 禁用扩展:进入 edge://extensions 临时关闭插件测试。 重置浏览器设置:前往 edge://settings/reset 恢复默认配置。 更新或重装 Edge:检查最新版本,或通过控制面板修复

1045

2025.04.24

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6501

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

369

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

448

2024.02.23

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

10

2026.03.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 11.5万人学习

C 教程
C 教程

共75课时 | 5.5万人学习

C++教程
C++教程

共115课时 | 22.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号