赞
踩
项目运行环境:
.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
更高版本的其实也是可以支持的。
WebView2 Runtime: https://developer.microsoft.com/zh-CN/microsoft-edge/webview2/#download
首先下载自己想要的固定版本的 WebView2 Runtime[1]
下载下来的文件为 Cab
格式的文件,此文件为压缩文件
将其解压,可得到如下的目录
Webview2
复制到项目中创建.Net Framework 4.5.2 WPF
项目,将解压的Webview2
复制到项目中,如下图所示:
文件夹 WebView2
中就是cap
文件解压后的二进制文件以及文件夹
将 WebView2
文件夹中所有文件
属性
- 高级
- 复制到输入目录
设置为 如果较新则复制
属性
- 高级
- 生成操作
设置为 无
如下图所示:
在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
的系统中运行
项目运行时,有些问题可能会出现,
报错 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
- }
将生成的 Debug
直接拷贝到不存在 Webview2
的系统中,是可以运行的,如果报错,请参考第四点进行检查项目
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。