调研avalonia框架2能否使用webView
背景
公司打算用跨平台的方式来使用webView打开网页,活派到我这了,那就直接开始了。
调研avalonia框架
调研环境:
Microsoft Visual Studio Professional 2022 (64 位) 版本 17.14.9 (July 2025)
需要安装.net8.0以上SDK安装包
下载地址https://dotnet.microsoft.com/en-us/download
需要安装vs2022跨平台开发安装(控制面板、更改VS2022安装程序)

需要安装vs2022扩展程序支持avalonia
下载地址https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaVS
创建项目
1.选择Avalonia C#项目

第二步

选择需要适配的平台,可以选择网页、android、ios等,这里全选了
项目创建成功
资源管理器当中会出现适配不同平台的类库。主程序实际是AvaloniaTest2,本质还是wpf进行跨平台。

存在Avalonia.WebView nuget包
根据说明进行配置


app页面增加webView调用
部署失败
一直提示无法加载源 https://accelerate-nuget-feed.avaloniaui.net/v3/index.json 的服务索引。

而根据官方的文档
https://docs.avaloniaui.net/ru/accelerate/components/webview/quickstart

这里的LINCENSE_KEY没有,直接访问这个https://accelerate-nuget-feed.avaloniaui.net/v3/index.json地址也需要一个账户名密码,目前卡住,无法继续进行。
替代方案:Maui框架
同样支持跨平台安卓部署,且能够直接使用webView控件。手动增加webView代码打开B站


调研https://github.com/OutSystems/WebView 此框架是否适应Avalonia框架
https://github.com/OutSystems/WebView 此框架是否适应Avalonia框架。
将项目源码下载,AvaloniaTest1加载项目WebViewControl.Avalonia源码
其中部分源码实际还需要进行一些修改,并不能直接使用


Android报错

主要报错信息如下:
One or more errors occurred. (Unable to resolve type WebView from namespace clr-namespace:WebViewControl;assembly=WebViewControl.Avalonia Line 16, position 4.) (Unable to resolve type WebView from namespace clr-namespace:WebViewControl;assembly=WebViewControl.Avalonia Line 16, position 4.) (Unable to resolve type WebView from namespace clr-namespace:WebViewControl;assembly=WebViewControl.Avalonia Line 16, position 4.) (Unable to resolve type WebView from namespace clr-namespace:WebViewControl;assembly=WebViewControl.Avalonia Line 16, position 4.) (Unable to resolve type WebView from namespace clr-namespace:WebViewControl;assembly=WebViewControl.Avalonia Line 16, position 4.) (Unable to resolve type WebView from namespace clr-namespace:WebViewControl;assembly=WebViewControl.Avalonia Line 16, position 4.) (Unable to resolve type WebView from namespace clr-namespace:WebViewControl;assembly=WebViewControl.Avalonia Line 16, position 4.) (Unable to resolve suitable regular or attached property Name on type :.{Unknown type} Line 16, position 4.) (Unable to resolve suitable regular or attached property Focusable on type :.{Unknown type} Line 16, position 4.) (Unable to resolve suitable regular or attached property Address on type :.{Unknown type} Line 16, position 4.)
无法识别控件

wpf执行桌面程序

则成功打开网页
可以确定该框架无法支持Android与主页描述一致

不死心继续调查开源框架Avalonia.WebView2
详细文档参考
https://github.com/lostmsu/Avalonia.WebView2/blob/main/README.zh-CN.md
里面提到一个Avalonia.WebView.Sample项目,打开发现

所有的包都是11.0.0版本,而默认创建的avalonia框架是11.3.0版本,尝试降档来使用该控件。

降档成功

代码中增加

打开百度成功

并且模拟器打包的apk可以成功安装。
总结:
虽然最终成功了,但是这个APP就放了一个webView控件再无其他东西,安装包竟然有70MB。。。

浙公网安备 33010602011771号