前言
微软在二周前, 发布了MAUI-6.0.312版本, 微软将这个版本称之为正式版本, 那么既然正式版本发布, 也就意味着可以进行开发接入了, 当然这其中肯定不排除BUG。
那么这次, 我主要的工作则是把之前的Xamarin.Forms ABP框架完整的移植到MAUI当中。
迁移工作
由于Xamarin.Forms当中使用到了好几个第三方以及社区组件, 包含UI组件、Xamarin社区工具包、Xamarin开源跨平台插件(访问图像、媒体资源等)。这些组件在MAUI当中
是处理无法使用的情况, 考虑到这些, 总结如下:
- UI组件则暂时使用原生来代替, 因为大部分UI没有特别的需求。
- Xamarin社区工具包中的一些功能无法使用, 暂时用别的替换, 例如自定义控件部分, SnackBar等。
- Xamarin开源跨平台插件则考虑在 Essentials中寻找替代方案
开始迁移工作
本次主要的目标是将Xamarin当中所有的UI页面、ViewModel、本地服务、网络服务、系统资源 等迁移到MAUI项目当中, 这里则分几步进行。
- 针对系统资源统一迁移到Resources文件夹当中,包含图像、字体库等资源。
- UI页面以及ViewModel全部迁移到MAUI项目当中, 移除Xamarin.Forms命名空间, 以及第三方依赖。
- 本地化服务以及网络服务移植到MAUI项目当中。 例如:平台本地化实现, 通过在Platforms当中单独实现。
- 启动资源配置以及依赖注入更新到MAUI的模式。
移植效果图
经过2天的移植工作,已经将90%的业务功能迁移到MAUI当中, 包含ABP框架当中的功能, 如: 系统授权、多语言切换、用户管理、组织、多租户等。下面是整个迁移的一些效果图。
关于细节方面, 后面将会讲解MAUI于Xamarin.Forms的差异。
- 登录页
- 系统首页
- 用户管理
- 审计日志
- 语言列表
- 系统设置
- 关于更多, 后面持续更新....
部分移植项截图示例
图像资源统一
字体库依赖注入
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
fonts.AddFont("Montserrat-Bold.ttf", "Montserrat-Bold");
fonts.AddFont("Montserrat-Medium.ttf", "Montserrat-Medium");
fonts.AddFont("Montserrat-Regular.ttf", "Montserrat-Regular");
fonts.AddFont("Montserrat-SemiBold.ttf", "Montserrat-SemiBold");
fonts.AddFont("UIFontIcons.ttf", "FontIcons");
fonts.AddFont("iconfont.ttf", "iconfont");
})
本地化实现
总结
MAUI项目的迁移工作, 大体上比较顺利, 尤其是在一些新的特性上, 会大幅度提升开发效率。例如目前已知的
- 单项目结构
- 统一的资源管理
- 启动项配置及依赖注入
- 统一 Essentials类库至MAUI当中
- GlobalUsing
- 简化SDK声明及调用
- WinUI的原生支持
在后面的文章中, 则会持续更新Xamarin.Forms迁移MAUI的一些相关问题。