6,227
社区成员
发帖
与我相关
我的任务
分享在 WPF 中使用本地 Webview2 ,如何不依赖系统 Runtime
在 WPF 中使用本地 Webview2 ,如何不依赖系统 Runtime
作者:WPFDevelopersOrg - ArcherSong
项目运行环境:
考虑到很多老项目,本项目使用的是.Net Framework 4.5.2,.Net 更高版本的其实也是可以支持的。
首先下载自己想要的固定版本的 WebView2 Runtime[1]

下载下来的文件为 Cab 格式的文件,此文件为压缩文件

将其解压,可得到如下的目录
\MICROSOFT.WEBVIEW2.FIXEDVERSIONRUNTIME.120.0.2210.91.X64
├─EBWebView
│ ├─x64
│ └─x86
├─edge_feedback
├─Extensions
├─Locales
├─MEIPreload
├─Notifications
├─PdfPreview
├─Trust Protection Lists
│ ├─Mu
│ └─Sigma
└─WidevineCdm
└─_platform_specific
└─win_x64
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 属性是在 最后才指定的 await webView.EnsureCoreWebView2Async(
await CoreWebView2Environment.CreateAsync(Path.Combine(AppDomain.CurrentDomain.BaseDirectory;, "WebView2")));
webView.Source = new Uri(Url);//最后才指定的Source
}
```
将生成的 Debug 直接拷贝到不存在 Webview2 的系统中,是可以运行的,如果报错,请参考第四点进行检查项目

[1]
WebView2 Runtime: https://developer.microsoft.com/zh-CN/microsoft-edge/webview2/#download
文章来源(CC-BY-SA知识共享):https://blog.csdn.net/sD7O95O/article/details/135321869