.Net桌面端开发使用WebView2,可以放弃CefSharp?

本文介绍Microsoft Edge WebView2控件,该控件允许开发者在本机应用程序中嵌入Web技术。文章详细介绍了WebView2的特性,包括如何使用Edge的Chromium内核渲染网页,以及其在Winform或WPF应用中的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

已更新后续:WebView2 使用及现状

最近研究.net Core的时候,发现微软终于放弃IE内核,拥抱Chrome了,这也算是微软对开源的决心越来越大吧。作为桌面端程序开发人员,不管是使用Winform还是WPF,如果想在界面上加载HTMl代码,使用自带的WebBrowser会发现是灾难性的事件,WebBrowser万年不变的IE7内核让不管多绚丽多彩的HTMl暗然失色,于是开始寻找替代方案,而CefSharp就是不二之选,CefSharp使用的是CEF开源框架,CEF 是一个基于google chromiun的简单的框架。

CefSharp: https://github.com/cefsharp/CefSharp/.

CefSharp提供Winform、WPF、OffScreen的NuGet获取下载,使用也很简单,只需要简单的配置一下即可享受Chrome浏览器的体验,之前写过一个 CefSharp 使用心得.

一、WebView2是什么?

Microsoft Edge WebView2 控件使你能够在本机应用程序中嵌入 web 技术 (HTML、CSS 和 JavaScript \ ) 。 WebView2 控件使用 Microsoft Edge () Chromium 作为呈现引擎在本机应用程序中显示 web 内容。 使用 WebView2,你可以将 web 代码嵌入本机应用程序的不同部分,或在单个 Web 视图中构建整个本机应用程序。
这是Micosoft官方文档的说明,其实就是跟之前的WebBrowser一样,也是基于本地的浏览器内核引擎来渲染网页的,只不过这次使用的是Edge的Chromium内核。所以要使用WebView2就必然需要本地安装了Microsoft Edge Chromium版本链接: https://www.microsoftedgeinsider.com/zh-cn/.。

二、使用步骤

1.必备条件

请确保在继续之前安装了以下先决条件列表:

Microsoft Edge (Chromium 在 windows 10、windows 8.1 或 windows 7 上安装了) 的未放大频道。
Visual Studio 2017 或更高版本。

2.引入库

直接Nuget:(请注意必须使用预发行版本,稳定版本还不能使用)
在这里插入图片描述
直接在XAML里引入库

xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"

<wv2:WebView2 x:Name="webView" Grid.Row="1"  Source="https://www.baidu.com" />

此时会发现,程序并未F5运行,但设计窗口直接加载了百度的页面,说明直接使用Edge渲染了网页。这个对开发人员来说真是舒服呀。
在这里插入图片描述
经过测试发现:WebView2支持H264的视频解码,要知道CefSharp可是需要自己手工重编译CEF才行的呀。
在这里插入图片描述
在后台可通过调用 CoreWebView2Environment.GetAvailableBrowserVersionString() 来获取当前的浏览器内核版本

string coreWebView2Environment = CoreWebView2Environment.GetAvailableBrowserVersionString();

页面的跳转通过Navigate:

private void btnGo_Click(object sender, RoutedEventArgs e)
        {
            if (webView != null && webView.CoreWebView2 != null)
            {
                webView.CoreWebView2.Navigate(tbUrl.Text);
            }
        }
 这里需要说明的是:必须对CoreWebView2进行初始化,看一下微软官方的解释是因为创建 CoreWebView2 是一个昂贵的操作,它涉及启动 Edge 浏览器进程之类的操作。

 有两种方法可导致创建 CoreWebView2:
 1)调用 EnsureCoreWebView2Async 方法。 这称为显式初始化。 
 2)设置 Source 属性(例如,可以通过标记执行此操作)。 这称为隐式初始化。

总结

WebView2未来应该是要替代WebBrowser的,虽然需要依赖本机自带的Edge chromium内核,但相信未来的windows 更新肯定会以Edge chromium内核代替IE内核,并且不需要重新下载Chrome浏览器,使用Edge也会有一样的浏览体验。而作为桌面开发人员来说,使用WebView2直接加载网页会比使用CefSharp来得更舒服,不再需要引入一堆的CEF类库,同时安装文件也会缩小很多。

已更新后续:WebView2 使用及现状

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值