現在前端的一個比較熱門的方向是Hybrid App,使用瀏覽器實現ui渲染,靠本地的webserver實現api擴展。在上篇文章簡單體驗aot後,我便試了一下和WebView2集成下是否能進行AOT。如果能集成的話,後面可以用C#發佈原生的Hybrid App了。
然而,比較遺憾的是,WebView2缺少ComWrappers支持,導致不支持aot,雖然官網有isses在跟蹤,但感覺優先級很低,兩年過去了都沒啥進展。找了一下,有社區項目WinFormsComInterop在着手解決這一問題,使用起來還是比較簡單的
- 添加nuget包
WinFormsComInterop
的應用 - 在Main函數中註冊
ComWrapper
ComWrappers.RegisterForMarshalling(WinFormsComInterop.WebView2.WebView2ComWrapper.Instance);
對於WebView2,其建議使用1.0.1462.37
的版本,其它版本可能有功能覆蓋不全的情況。
有一點需要注意的是:這個庫目前不支持.net 8,所以目前還不能和asp.net集成在一起aot,只能外掛aot的asp.net服務程序。等後面.net 8正式發佈後再看看是否有更新吧。
相關資料: