.NET MAUI是微软基于.NET生态推出的跨平台应用开发框架,允许开发者使用C#和XAML编写一套代码,就能将应用部署到Android、iOS、Windows、macOS等多个平台,非常适合需要同时覆盖手机和桌面端的开发场景。

.NET MAUI开发环境准备
首先需要在开发设备上安装对应的工具,Windows平台推荐安装Visual Studio 2022,macOS平台推荐安装Visual Studio 2022 for Mac,安装时勾选.NET_MAUI相关工作负载即可。安装完成后,需要确认.NET SDK版本至少为.NET 6及以上,因为.NET MAUI基于.NET 6及更高版本构建。
可以通过命令行验证环境是否配置成功,执行以下命令查看已安装的.NET MAUI工作负载:
dotnet workload list
如果列表中包含maui相关项,说明环境已经准备就绪。
创建第一个.NET MAUI项目
打开Visual Studio,选择创建新项目,在项目模板中搜索MAUI,选择.NET MAUI应用模板,点击下一步。填写项目名称和存储路径后,点击创建即可生成默认的MAUI项目。
默认项目的结构如下:
- Platforms目录:存放不同平台的特定代码,比如Android、iOS、Windows等平台的启动配置
- Resources目录:存放应用的资源文件,比如图片、字体、样式等
- App.xaml和App.xaml.cs:应用的入口配置,定义全局资源和应用生命周期逻辑
- MainPage.xaml和MainPage.xaml.cs:应用的主页面,包含界面布局和交互逻辑
编写跨平台界面和逻辑
界面布局设计
MAUI使用XAML编写界面,和WPF、Xamarin.Forms的语法类似,以下是一个简单的主页面布局示例,包含一个文本显示和一个按钮:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiDemo.MainPage">
<VerticalStackLayout Spacing="20" Padding="30">
<Label Text="欢迎使用.NET MAUI"
FontSize="24"
HorizontalOptions="Center" />
<Button Text="点击计数"
Clicked="OnCounterClicked"
HorizontalOptions="Center" />
<Label x:Name="CounterLabel"
Text="点击次数:0"
FontSize="18"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ContentPage>
交互逻辑实现
对应的后台C#逻辑代码如下,实现点击按钮计数并更新显示的功能:
namespace MauiDemo;
public partial class MainPage : ContentPage
{
private int _count = 0;
public MainPage()
{
InitializeComponent();
}
private void OnCounterClicked(object sender, EventArgs e)
{
_count++;
CounterLabel.Text = $"点击次数:{_count}";
// 计数到10时弹出提示
if (_count == 10)
{
Dispatcher.Dispatch(async () =>
{
await DisplayAlert("提示", "你已经点击了10次", "确定");
});
}
}
}
多平台适配注意事项
虽然.NET MAUI是一套代码多端运行,但部分功能在不同平台上存在差异,需要进行适配:
- 权限处理:比如访问相机、存储等权限,不同平台的申请方式不同,可以使用MAUI提供的权限API统一处理
- 界面适配:不同设备的屏幕尺寸差异较大,可以使用
Grid布局和响应式尺寸设置适配不同屏幕 - 平台特定功能:如果某个功能只在特定平台存在,可以在Platforms目录下对应平台的文件夹中编写特定代码,通过条件编译调用
以下是一个条件编译的示例,在不同平台执行不同的日志输出逻辑:
public void PrintPlatformInfo()
{
#if ANDROID
Console.WriteLine("当前运行在Android平台");
#elif IOS
Console.WriteLine("当前运行在iOS平台");
#elif WINDOWS
Console.WriteLine("当前运行在Windows平台");
#elif MACCATALYST
Console.WriteLine("当前运行在macOS平台");
#endif
}
应用打包与发布
开发完成后,可以根据目标平台进行打包:
- Android平台:可以直接生成APK或者AAB包,用于分发到应用商店或者直接安装
- iOS平台:需要配置开发者证书,生成IPA包,通过TestFlight或者App Store分发
- Windows平台:可以生成MSIX包,用于Windows应用商店或者直接安装
- macOS平台:可以生成APP包,分发到Mac App Store或者直接提供下载
打包过程可以在Visual Studio中通过右键项目选择发布选项,按照向导提示完成对应平台的打包配置即可。