先結論
首先對於WebView2,我認為是完全可以替代CEF來使用,用起來是真的舒服
微軟團隊這個積極維護這個項目,4周一更新的頻率就可以看出是有多積極
關於資料什么的,網上相對來說已經挺多了,完全不用擔心
優缺點
優點
- 使用方便,NuGet里裝個WebView2就能用,和CEF的麻煩程度比起來,簡直就是天上地下
- 包小,WebView2 runtime可以直接在線安裝
- 支持H264,對PDF也很友好
缺點
- 需要.net framework4.5.2(記不清了)以上或.net 5
對於WPF,依然渲染在最上層(解決方法:把需要渲染上層的布局放在模態窗口並跟隨,同時綁定同一個ViewModel方便使用)已修復- 使用人員少,沒形成社區
踩過的坑
1. userDataFolder
關於用戶數據文件夾,如果不設置,默認會存放在運行程序目錄下,如果運行程序在ProgramFiles目錄,則會有權限問題,導致寫入失敗而報錯,解決方法是在初始化時修改到其他目錄,如local
protected override async void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
try
{
var webView2Environment = await CoreWebView2Environment.CreateAsync(browserExecutableFolder: null, userDataFolder: SDK.BaseConst.DataBasePath);
await WebView2.EnsureCoreWebView2Async(webView2Environment);
}
catch (Exception){}
}
2. input-file標簽
當程序以管理員身份運行時,HTML中如果包含input-file則點擊無效
我在github的項目中看到過,他們會在未來的版本中修復這個問題,目前只能取消管理員身份,如可以把需要管理員的操作放在安裝或子程序中
3. 顯示-兼容性問題
注入dll導致渲染失敗,一些安全廠家注入的dll簽名未通過,最終導致,解決方法只能去找出並卸載
- 查看注入的dll列表
edge://conflicts/#R
- 如果存在非微軟和谷歌簽名的dll,就存在嫌疑了,(我遇到的是用戶電腦上安裝了T.E.C公司的軟件,用來監測電腦)
具體資料參考。