如何在win7同样支持Webview2 在 WPF 中使用本地 Webview2 ,如何不依赖系统 Runtime
项目运行环境:
-
.Net Framework 4.5.2
-
Windows 7 x64 Service Pack 1
-
WebView2 Microsoft.WebView2.FixedVersionRuntime.120.0.2210.91.x64
考虑到很多老项目,本项目使用的是.Net Framework 4.5.2,.Net?更高版本的其实也是可以支持的。
1、下载 WebView2 固定版本 Runtime
WebView2 Runtime:?https://developer.microsoft.com/zh-CN/microsoft-edge/webview2/#download
首先下载自己想要的固定版本的?WebView2 Runtime[1]

下载下来的文件为?Cab?格式的文件,此文件为压缩文件?
将其解压,可得到如下的目录

2、创建项目,将Webview2?复制到项目中
创建.Net Framework 4.5.2 WPF?项目,将解压的Webview2?复制到项目中,如下图所示:
文件夹?WebView2?中就是cap文件解压后的二进制文件以及文件夹
将?WebView2?文件夹中所有文件
属性?-?高级?-?复制到输入目录?设置为?如果较新则复制
属性?-?高级?-?生成操作?设置为?无
如下图所示:

3、在项目的 MainWindow 后台代码中写逻辑
在MainWindow.cs?文件中添加代码
Public partial class MainWindow : Window
{
public string Url { get; set; } = "https://www.bing.com";
public MainWindow()
{
InitializeComponent();
}
protected override async void OnContentRendered(EventArgs e)
{
base.OnContentRendered(e);
await webView.EnsureCoreWebView2Async(
await CoreWebView2Environment.CreateAsync(Path.Combine(AppDomain.CurrentDomain.BaseDirectory;, "WebView2")));
webView.Source = new Uri(Url);
}
}
添加后,即可在无?WebView2 Runtime?的系统中运行
?
4、一些问题
项目运行时,有些问题可能会出现,
-
报错?
Microsoft.Web.WebView2.Core.WebView2RuntimeNotFoundException:“Couldn't find a compatible Webview2 Runtime installation to host WebViews.”?这个可能是因为wenview2的文件没有设置为?较新则复制?导致的 -
报错?
System.ArgumentException:“WebView2 was already initialized with a different CoreWebView2Environment. Check to see if the Source property was already set or EnsureCoreWebView2Async was previously called with different values.?这个可能是因为在执行?OnContentRendered?方法前,,对CoreWebview2设置了source属性,此时webview2会自动初始化环境,后面不能重复初始化
去掉source属性(设置属性或者在构造时去掉都可以)上面代码可以看到,
Source?属性是在 最后才指定的
protected override async void OnContentRendered(EventArgs e)
{
base.OnContentRendered(e);
await webView.EnsureCoreWebView2Async(
await CoreWebView2Environment.CreateAsync(Path.Combine(AppDomain.CurrentDomain.BaseDirectory;, "WebView2")));
webView.Source = new Uri(Url);//最后才指定的Source
}
5、运行
将生成的?Debug?直接拷贝到不存在?Webview2?的系统中,是可以运行的,如果报错,请参考第四点进行检查项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!