如何在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进行投诉反馈,一经查实,立即删除!