.NET MAUI — 项目搭建技能
用途
此技能为代理提供一种标准化、面向生产的方式来创建和构建 .NET MAUI 应用程序。它定义了在新 MAUI 项目初始化时应采用的文件夹约定、MVVM 架构默认设置、依赖注入模式以及跨平台注意事项。
其目标是确保所有生成的 MAUI 项目都遵循一致、可维护且可扩展的模式。
核心原则
-
MVVM 优先架构 以 ViewModel、可观察属性和命令作为主要交互模式。
-
依赖注入 使用内置 DI 容器在
MauiProgram.cs中注册服务。 -
关注点分离 将 UI、业务逻辑和数据访问隔离在清晰的文件夹结构中。
-
跨平台意识 除非必要,优先使用抽象而非平台特定代码。
-
可扩展的文件夹结构 将代码组织成可预测、易发现的模块。
推荐文件夹结构
[root]
├─ Models
│ └─ [在此添加模型类]
├─ Platforms
│ └─ [在此添加平台特定设置和代码]
├─ Resources
│ ├─ AppIcon
│ │ └─ [在此添加应用程序图标文件]
│ ├─ Fonts
│ │ └─ [在此添加字体文件]
│ ├─ Images
│ │ └─ [在此添加图像文件]
│ ├─ raw
│ │ └─ [在此添加原始文件]
│ ├─ Splash
│ │ └─ [在此添加启动屏幕文件]
│ └─ Styles
│ └─ [在此添加样式文件]
├─ Services
│ ├─ Interfaces
│ │ └─ [在此添加服务接口]
│ └─ [在此添加服务类]
├─ ViewModels
│ ├─ MainViewModel.cs
│ └─ [在此添加其他 ViewModel]
├─ Views
│ ├─ Controls
│ │ └─ [在此添加自定义控件]
│ ├─ MainPage.xaml
│ │ └─ MainPage.xaml.cs
│ └─ Templates
│ └─ [在此添加自定义模板]
├─ App.xaml
│ └─ App.xaml.cs
└─ MauiProgram.cs
项目初始化步骤
-
创建新的 MAUI 项目:
dotnet new maui -n [ProjectName] -
添加 MVVM 基类:
BaseViewModelObservableObject或INotifyPropertyChanged实现AsyncCommand辅助类
-
在
MauiProgram.cs中注册服务:builder.Services.AddSingleton<INavigationService, NavigationService>(); builder.Services.AddTransient<MainViewModel>(); builder.Services.AddTransient<MainPage>(); -
在
Resources/Styles/Styles.xaml中配置全局样式。 -
添加平台资源:
- 应用图标
- 启动屏幕
- 权限清单
代理使用指南
- 始终使用上述文件夹结构搭建新的 MAUI 应用(在项目创建后进行调整)。
- 生成代码时,将文件放入正确的文件夹。
- 当被要求“创建新页面”时,同时生成:
Views/MyPage.xamlViewModels/MyPageViewModel.cs
- 当被要求“添加服务”时,创建:
Services/Interfaces/IServiceName.csServices/ServiceName.cs
- 在
MauiProgram.cs中注册它。
超出范围
- 深层 UI 最佳实践(由
maui-ui-best-practices覆盖) - 认证流程(由
maui-authentication覆盖) - 部署(由
maui-deployment覆盖)