.NET MAUI RC1 体验

本文详细记录了作者在.NET MAUI预览版中创建项目、配置环境、编译并运行到iOS设备的全过程,强调了开发者的良好体验和学习价值,尽管存在一些bug和限制。

前言

.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,比如我在测试过程中,热重载没有,而且无法重复编译,需要重新打开项目才行,不知道是不是我的使用问题。
希望后面这个项目真的能搞起来吧。

### .NET MAUI 开发指南和示例 #### 关于 .NET MAUI 的概述 .NET Multi-platform App UI (.NET MAUI) 是一种跨平台框架,允许开发者构建适用于 Windows、macOS、iOSAndroid 的应用程序。它通过单一代码库实现了多平台支持,并提供了丰富的工具集来简化开发过程。 #### 使用社区工具包增强功能 为了进一步提升开发效率,.NET MAUI 社区提供了一个名为 **Community Toolkit** 的开源库[^3]。该工具包包含了多种扩展方法、高级用户界面组件以及行为模式,旨在帮助开发者更轻松地完成复杂的任务。例如,可以使用其中的预定义控件快速实现动画效果或者数据绑定逻辑。 #### 创建第一个 .NET MAUI 应用程序 对于初学者来说,可以从官方文档中的入门教程开始学习如何建立自己的首个 .NET MAUI 应用程序[^4]。此过程中会详细介绍设置环境变量、安装必要软件以及编写基本代码等内容,使新手能够迅速上手并理解整个工作流程。 #### 探索示例项目以加深理解 dotnet-maui-samples 是一个由微软维护的公开存储库,里面收集了许多实用的例子来演示不同情况下的解决方案[^5]。这些例子覆盖范围广泛,从简单的页面导航到复杂的数据处理都有涉及,非常适合用来作为实际操作练习材料。 #### 实现热重载提高调试体验 在现代移动应用开发中,“即时反馈”是非常重要的概念之一。因此,在.NET MAUI 中引入了“Hot Reload”技术[^2],让程序员能够在不重启模拟器的情况下立即查看修改后的结果,从而极大地提高了工作效率。 ```csharp // 示例:创建一个新的 ContentPage 并设置其标题 public class MainPage : ContentPage { public MainPage() { Title = "Welcome to .NET MAUI!"; var label = new Label { Text = "Hello, World!" }; Content = label; } } ``` 上述代码片段展示了如何在一个新的 `.NET MAUI` 页面中添加文本标签 `Label` 控件,并将其显示给用户。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值