6 步在 Windows 上做出 .NET MAUI 应用:从环境到发布的实战指南
2026/9/5 15:37:00 网站建设 项目流程

6 步在 Windows 上做出 .NET MAUI 应用:从环境到发布的实战指南

【免费下载链接】maui.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.项目地址: https://gitcode.com/GitHub_Trending/ma/maui

还在用 WinForms 写 Windows 桌面工具,下一季度老板却要求"手机上也要有"?重写一套代码?不必。.NET MAUI 让你用一份 C# 代码同时交付 Windows、Android、iOS 和 macOS 的原生应用。这篇实战指南带你走完 MAUI 环境安装、建项目、写界面、打包 MSIX 的每一步,跟着做即可上手。

30 秒认知卡

项目说明
定位Xamarin.Forms 的进化版,面向 Windows、macOS 的跨平台原生应用框架
支持平台iOS、Android、Windows、macOS
技术栈C# + XAML(声明式标记语言,类似 HTML)
适合谁.NET 开发者、想转跨平台的 Windows 开发者、移动端新手

动手前:一张 Windows 环境检查清单 📋

先对照下面这张表自检,缺哪项补哪项,能省掉后面 80% 的折腾:

检查项要求
操作系统Windows 10 1809 及以上,或 Windows 11(必须 64 位)
内存8 GB 起步,推荐 16 GB
虚拟化处理器支持 Hyper-V(跑 Android 模拟器要用)
开发工具Visual Studio 2022(社区版即可)
关键组件安装时勾选"移动开发与 .NET"工作负载,并确认其中的.NET MAUI组件

安装动作只有三步:

  1. 打开 Visual Studio 2022 安装器,进入"工作负载"页。
  2. 勾选"移动开发与 .NET",在右侧组件栏确认 .NET MAUI 已勾选。
  3. 点"修改"装完,顺手创建个空白 MAUI 项目编译一次,工具链就通了。

第一次运行:5 分钟建起并跑通项目 🏁

打开 Visual Studio,选"创建新项目",搜索框输入MAUI,选 ".NET MAUI App" 模板,命名后创建。

新项目的目录长这样,先混个脸熟:

  • MauiProgram.cs:应用入口,服务注册都在这
  • App.xaml/AppShell.xaml:根界面与导航壳
  • MainPage.xaml:你的第一页
  • Platforms/:Windows、Android、iOS 各自的差异代码
  • Resources/:图标、字体、图片等素材
  • 项目文件(.csproj):目标框架与打包配置

.csproj里决定"这份代码要编译到哪些平台":

<TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst;net8.0-windows10.0.19041.0</TargetFrameworks>

只在 Windows 上开发?把其他几段删掉,只留net8.0-windows10.0.19041.0,编译会快一大截。

然后按 F5,默认目标就是 Windows,第一版应用就在你桌面上跑起来了。

布局速查:用 XAML 拼出界面 🧱

XAML 是描述"界面长什么样"的标记语言,属性写在标签里,改一行刷一下就能看到效果。常用容器速查如下:

容器干什么用一句话理解
VerticalStackLayout/HorizontalStackLayout垂直/水平排列子元素把卡片一列列摆好
Grid行列网格一张 Excel 表格
ScrollView包裹可滚动内容可上下拉长的画布

一个能直接用的页面骨架:

<ScrollView> <VerticalStackLayout Spacing="20" Padding="30"> <Image Source="dotnet_bot.png" HeightRequest="180" HorizontalOptions="Center" /> <Label Text="Hello, Windows!" FontSize="28" HorizontalOptions="Center" /> <Button Text="点我" Clicked="OnCounterClicked" HorizontalOptions="Center" /> </VerticalStackLayout> </ScrollView>

想要多列就多上Grid:给它RowDefinitions="Auto,*"ColumnDefinitions="*,2*",再用Grid.RowGrid.Column指定每个控件落在哪一格,表单类界面基本都能搞定。

示例工程Resources/Images里自带现成素材,比如 photo.jpg,写进<Image>Source就能加载:

让数据动起来:数据绑定与 MVVM 🧑‍🍳

想象一家餐厅:View 是大堂,顾客只能看到桌面和菜单;ViewModel 是服务员,把顾客需求转成订单、把端上来的菜摆好;Model 是厨房,真正干活的是它。三者各干各的,换装修(改 UI)不用动厨房。

落到 MAUI 术语上就是:{Binding OrderCount}把界面属性接到 ViewModel 属性上,数据一变,UI 自动刷新。而"通知 UI 刷新"靠的是INotifyPropertyChanged接口——它是 ViewModel 上挂的一只铃铛,属性一改就摇铃:

public class MainViewModel : INotifyPropertyChanged { private int _count; public int Count { get => _count; set { _count = value; OnPropertyChanged(); } } public event PropertyChangedEventHandler? PropertyChanged; void OnPropertyChanged() => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Count))); }

页面加载时一行代码把 ViewModel 交给界面:BindingContext = new MainViewModel();。之后 XAML 里写Text="{Binding Count}",计数器就活了。

质量把关:调试与测试你的 MAUI 应用 🧪

  • 本地调试:目标选 Windows,打断点按 F5,和调试普通 .NET 程序完全一样。
  • 模拟器与真机:Android 用模拟器或 USB 真机;iOS 需要 Mac 上的模拟器。在工具栏的目标设备下拉框里切换即可。
  • 单元测试:加一个 xUnit 测试项目,引用主项目,把 ViewModel 当普通类测:
[Fact] public void Count_Increases_When_Added() { var vm = new MainViewModel(); vm.Count++; Assert.Equal(1, vm.Count); }

业务逻辑放 ViewModel,意味着绝大部分代码不依赖任何平台 API,一台 Windows 机器上就能把测试全跑绿。真要看 UI 层面的回归,参考 docs/UITesting-Guide.md,它演示了如何用 UI 测试框架对比截图——失败了大概长这样:

上架:一键生成 MSIX 应用包 📦

MAUI 的 Windows 产物是MSIX(Windows 应用包格式,类似 Android 的 APK),发布路径有两条:

  • 侧载:把.msix文件直接发给同事,装完即用,适合内部工具。
  • Microsoft Store:提交商店审核,面向公开分发。

两种方式都能走:Visual Studio 里右键项目 →"发布" → 选 Windows,按向导勾"生成应用包"即可。习惯命令行的话:

dotnet publish -f net8.0-windows10.0.19041.0 -p:WindowsPackageType=MSIX

跑完在输出目录里拿到.msix,双击安装,版本号和包名在项目的打包属性里配置。

避坑清单:MAUI Windows 开发高频 5 问 ❓

Q1:编译一次要等好几分钟?正常,多目标框架会编译所有平台。只留 Windows 目标(见前文.csprojTargetFrameworks),日常开发快得多。

Q2:报"找不到 .NET MAUI 工作负载"或组件缺失?打开 VS Installer 重新勾选"移动开发与 .NET"和 .NET MAUI 组件,装完重启 IDE。

Q3:怎么给控件加自定义属性?别只写普通字段,用BindableProperty.Create(nameof(Radius), typeof(double), typeof(MyView), 0d)创建可绑定属性,XAML 里才能直接赋值。

Q4:列表一长就卡?三条药方:减少嵌套层级(Grid替代层层套的StackLayout)、长列表启用虚拟化、耗时操作移出 UI 线程(async异步)。

Q5:Windows 上样式和文档图对不上?Windows 端由 WinUI 原生渲染,平台差异代码集中在Platforms/Windows/目录,先翻这里再怀疑框架。

收尾:接下来做什么 🚀

给你三个具体动作,今晚就能开始:

  1. 用 10 分钟做一个计数器小应用,走完"建项目 → F5 → 加绑定"全流程。
  2. 挑现有某个 Windows 内部工具的一个页面,用 MAUI 重写一遍试试手感。
  3. 按发布章节打出第一个 MSIX,侧载到另一台机器验证。

延伸资料,都在仓库里:

  • 开发指南:docs/DevelopmentTips.md
  • UI 测试指南:docs/UITesting-Guide.md
  • 可运行的控件示例应用:src/Controls/samples/
  • 仓库入口:https://gitcode.com/GitHub_Trending/ma/maui

【免费下载链接】maui.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.项目地址: https://gitcode.com/GitHub_Trending/ma/maui

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询