项目运行环境:
.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
?的系统中,是可以运行的,如果报错,请参考第四点进行检查项目