浅谈MAUI在2023年的最新现状

星期三, 10月 15, 2025 | 1分钟阅读 | 更新于 星期三, 10月 15, 2025

@

浅浅谈谈开发体验,更加深入的体验还需要更多的使用。

从目前的情况来看,MAUI 7.0还没有完全就绪,从开发环境、开发范式和文档上体验上还比较差,实际的使用上来说甚至还没有达到xmarin的水平,个人用用没事,距离商用还是存在一定的距离。

开发环境

MAUI在.net7.0版本正式发布,他的xaml开发环境,比如可视化设计器、代码提示、项目模板、热重载呀等功能都在VS2022中得到支持。2019现在和将来也不会支持MAUI的开发,经过实测2019打开了MAUI项目除了编辑文本什么都做不了。

VS2022

VS2022是目前MAUI的稳定的开发工具,支持windows和macos。BUT,不出意外的有意外。由于VS2022大刀阔斧的改革,当然也可能是这两年微软内部的变动。VS2022终于是64位程序了,有些功能迎来了速度喜人的提升。但是,依然存在问题:

  1. 优化后整体使用体验流畅度比2019差了很多,加载项目是快了点,但是加载完了准备过程要卡一会儿(仅针对.net的UI项目)。
  2. MSBUILD开始变得不稳定了,速度明显变慢,用VS这么多年第一次遇到MSBUILD报win32错误。。。
  3. .net的调试器人生第一次出现F5调试程序跑起来了,调试器附加进程失败的滑稽操作,真的是活久见
  4. .net的web http库有bug,导致VS2022更新功能更新的时候都会报.net的网络错误,调代码中老是遇到 经过查证,VS2022里负责性能优化和调试器的人已经是三哥了,严重怀疑VS2022咖喱超标。

VSCode

VSCode目前的MAUI还是一个预览状态,并不是一个稳定的开发MAUI的选项。实际体验下来确实发现了很多问题:

  1. .NET MAUI插件的文档里没有介绍怎么完整安装VSCode开发环境,实际上也不仅仅只是安装.NET MAUI插件这么简单,这个要到微软的官方文档网站里去找。
  2. 找到文档了之后安装.NET MAUI插件,它以依赖C#、C# Dev Kit和.NET Istall Toll for Extension Authors。离谱的就是这几个依赖,C# Dev Kit这个插件要工作需要你有VisualStudio2022的授权,.NET Istall Toll for Extension Authors插件在打开项目之后会"主动"的下载.net 7.0.9——即使你已经安装了。无奈的是,它坚决不下载成功,还一直重试。卡在这步过不了,调试环境就不加载。好的是它有一个官方的TroubleShooting文档介绍如何解决这个问题,坏的是他们愿意写文档教你手动配置都不愿修插件的bug,而且写的文档还是错的(正确的解决办法在StackOverflow上找到了),突出一个没用过VSCode。
  3. 官方说了有代码提示,.net的是有了,XAML的目前还有没一点。
  4. 不支持F12看定义
  5. 不支持看视图树
  6. 开启项目每次都要查找项目、加载环境等待时间长
  7. 调试环境选择必须要打开选中项目文件,然后在右下角点击一个花括号
  8. 添加或者连接了移动设备,调试环境不能刷新,需要关闭VSCode重新打开项目才能识别

从开发体验的角度来看,VSCode给了我惊喜,除了插件写得搓较慢,开发流畅度高,编译运行也很快,错误提示也到位。但是,VSCode这边明显感觉投入的精力不多,只是为了迎合社区弄出来糊弄嘴的。如果要使用,建议多去提issue(骂),做好只能调试C#代码的准备,做好C# Markup开发的准备,xaml一段时间内都不要想了。

开发范式

MVVM

xaml + ViewModel 官方主推的MVVM开发范式,讲道理xaml写起来废话很多,用啥都要实例化成Resource,绑定的寻路规则像在唐清朝写路引一样,突出一个练打字的。也因为这种模式的历史悠久,所以也是最完善、库最多和资料最多的一种范式。但是缺点也很明显,不能很简单的灵活,甚至有些逻辑根本不能在xaml上实现。

C# Markup + ViewModel 从WPF就有CodeBehind的绑定和控件定义方式,但是以前的写法比xaml还复杂,只是在一些xaml写起来太麻烦或者根本实现不了的功能才在CodeBehind中实现。但是现在简化版的MarkUp借助C#的语法更新和社区开发者的努力已经变简单了很多了,同时ViewModel的语法也在Toolkit的加持下变得简单。可喜的是,Markup的作者已经开发了Markup2了,现在正在完成MAUI的支持。届时这种xaml less 的开发范式将会成为未来的主流,但是不是官方的主推。同时,Markup2也可以推动MVU框架的可能性,当然前提是有人去搞。

大家都越来越简化,就微软还在抱着xaml什么都不动

MVU

官方在类flutter纯C#的MVU方向上的尝试项目是Comet,但是由于主要开发人员离职,MAUI团队没有其他人对这块有兴趣,项目基本已经凉了。

社区有项目 ,可以尝试一下。

其实有xaml基础,我觉得最合适MAUI的MVU方案是混合开发搞.CSX,编译器支持应该很快,只需要一个渲染引擎和状态管理就可以了,但是目前没有人搞哦,官方还是把精力放在了xaml上。

个人吐槽:MAUI项目感觉死气沉沉,一堆从xmarin过来的老人感觉像找了个养老的地方一样,抱着以前那套东西在这里搞。要是下岗了,尼玛工作都找不到。自己的xaml搞得得连wpf都不如,还要Toolkit项目来救。

文档

由于.NET和MAUI的杂糅历史,主体是从xmarin移植过来的,xmarin大家都知道设计得有多“好”。所以,在开发文档这方面也沿袭了这种气质,MAUI的文档主要介绍了xaml新的部分和MVVM的内容,还有部分跨平台的内容,总体感觉就是基础和简单,更多实际中的用法只能靠真爱粉自己摸索了写博客了。

更多的xaml控件定义和介绍,与xmarin相同的部分需要自行前往xmarin中看,甚至API类定义都需要过去看(MAUI这边的文档感觉跟不上实际的步伐)。

又由于MAUI的跨平台架构在不同的平台上是使用的native实现,所以在windows上甚至很多和平台相关的特性,可能需要去看Windows App的开发文档和WinUI2、WinUI3的文档。如Fluent设计、布局(特别是响应式)、交互控件(特别是一些平台相关的控件)、平台风格、动画、窗口shell等。

但是由于补齐的内容是其他框架库的文档,而MAUI又做了一些统一,所以势必有些文档的细节是不能在MAUI上使用成功的。其中,最明显的例子就是xaml,xmarin、wpf、winui的xaml之间相似但是存在差异。我觉得目前来说搞C# Markup避免使用xaml是一个合适的选择,通过C#的灵活性来避免xaml差异带来的各种功能不生效或者一些反逻辑的写法。

© 2025 若烟阁

🌱 Powered by Hugo with theme Dream.

关于我

这里是鱼人小野的个人博客!

为什么要自己搭建博客

在学习的道路上,有很多所思所想所悟,有很多经验希望得到总结。所以,陆陆续续的用过wordpress,CSDN,开源中国,简书,掘金等博客平台,最后还是回到了原点重新装修以前觉得简陋的github.io(这得感谢社区的人们的付出)。

在这个过程中愈发的体会到,自己搭博客的好处。就是没有讳莫如深的审核,也不用看人脸色,更不用担心自己辛苦写的博客再修订一下后没了。(当然,也就没有流量推荐,不过反正都是写给自己看的,能对其他朋友有点帮助那当然更好了