前言
.NET MAUI已经传了很久了,体验具体如何,我也一直没有尝试成功,4月13日,微软终于跟随VS2022 预览版3 发布了MAUI的候选版本,看了一圈网上的相关介绍,都是在翻译官方的博客内容,很少有实际体验的文章,于是我决定来体验一波。
环境
运行环境:.Net 6
开发环境:VS2022 17.3 (必须是预览3+)
使用
在安装了VS2022 17.3 预览版本后,创建项目里直接有 .NET MAUI(预览),创建过程跟创建WPF基本一样
初始化后,就有了四个平台的预览代码了:
直接生成桌面程序,很快就跑起来了
写过WPF的都能看懂,XAML的UI很好理解。
接下来就是重头戏,刚好手边有一个iphone测试机,于是决定测试一下,生成在ios版本。
要运行在ios环境里需要先配置一波,这里强烈建议阅读官方的文档,里面有详细的配置步骤及各种解决方案:什么是.NET MAUI
由于编译ios程序需要apple的开发者账号,以及需要一台mac电脑远程编译
1、先在vs2022里配置apple开发者账户
选项-设置-Xamarin-Apple帐户
先创建证书,再下载所有配置文件
打开项目属性-ios-bundle signing里设置
这样就把vs2022环境配置好了
2、需要与mac匹配上
这个匹配过程官方有两种方案:
需要mac电脑打开远程登录功能,设置允许远程登录,及关闭防火墙,这个可以自行百度一下mac 的设置流程
1、是直接匹配,在匹配的过程,vs2022会自动下载需要的编译SDK(尝试过,未成功)
2、在mac 安装vs2022 预览版 for mac (亲测有效)
上图就是匹配成功的显示。
接下来,连接上iphone(需要安装好apple相关的驱动程序,一般是安装一下itunes就可以了),就能显示iphone设备了
然后直接编译,成功,在iphone上就可以看到该app了跟PC端的页面一模一样。
由于苹果的限制,IOS系统中不允许动态解析IL代码并执行,这跟苹果的程序安全机制有关系。IOS的程序都是运行在安全沙盒中,不允许在运行过程中动态加载分析执行代码。所以,Xamarin采用的是AOT编译机制。Android以JIT方式编译,而通过Xamarin编译后产生的文件为原生平台的ARM机器码,并且,Android和iOS皆为1对1的方式对应至原生SDK。生成的对应的平台的机器码是不是就是跟原生程序—样了?既然是吧本机的程序集文件扔到了Mac下编译的,那肯定是对应平台的原生代码了。所以,跟用OC开发的是一样的,只不过Xamarin转化了,估计体积略大,有冗余!
安卓环境由于手边没有安卓测试设备,没有尝试成功。
总结
总体来说整个开发体验还是非常不错的,我把这个结果给负责ios开发的同事看,都很惊叹,表示有必要学习一下C#了(玩笑话)。
但终究还是体验版,还有很多bug,比如我在测试过程中,热重载没有,而且无法重复编译,需要重新打开项目才行,不知道是不是我的使用问题。
希望后面这个项目真的能搞起来吧。