尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Windows 上用 .NET MAUI 开发跨平台应用:从安装到发布的完整指南

Windows 上用 .NET MAUI 开发跨平台应用:从安装到发布的完整指南 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接到一个需求给内部团队做一个跨平台客户端Windows 是必选项未来还要上 Android。你手头是 C#/.NET 技术栈不想为每端重写一遍 UI。用 .NET MAUI 在 Windows 上从零建环境、跑通模板、交付 MSIX 安装包这篇指南带你一次搞定。选型判断什么时候该用 .NET MAUI先回答一个真实问题这个活儿到底值不值得上跨平台框架痛点一多端重复开发的成本。团队里 iOS、Android、Windows 各有一套 UI 代码同一套业务逻辑要维护三遍。.NET MAUI 让你用一份 C# 代码库覆盖 Android、iOS、macOS、Windows 四端UI 层共享平台差异收敛到Platforms/目录下的少量文件里。痛点二技术栈匹配。如果团队已经是 .NET 栈——熟悉 C#、XAML、Entity Framework、ASP.NET Core——那 .NET MAUI 是自然延伸学习成本主要是 XAML 控件集本身而不是重新学一门语言。痛点三交付形态。Windows 端要能出侧载包或 MSIX 包直接分发移动端要能跑原生控件渲染.NET MAUI 的渲染管线SkiaSharp保证各端都走原生绘制而非 WebView 套壳。反过来说如果只交付单平台纯 Web 应用或者 UI 深度依赖某个平台的独占 API那就别硬套跨平台方案了。最短准备路径从零环境到第一次跑通装什么Windows 10 版本1809或更高版本或 Windows 1164 位系统至少 8GB 内存16GB 更从容支持 Hyper-V 的处理器模拟器需要Visual Studio 2022社区版即可怎么装运行 Visual Studio 2022 安装器。勾选“移动开发与 .NET”工作负载。在右侧“安装详细信息”里确认“ .NET MAUI 和 iOS”组件已勾选这是最容易被漏掉的一项。点击安装等待完成。三步验证开发环境打开终端执行dotnet new maui -n NewApp能生成项目就说明 MAUI 模板已就位。如果提示找不到maui模板单独补装 workloaddotnet workload install maui用 Visual Studio 打开生成的NewApp.csproj目标框架选net*-windows条目按 F5。窗口弹出、计数器能点环境就通了。常见踩坑点组件漏勾装了“移动开发与 .NET”但没勾 .NET MAUI 组件结果dotnet new maui不存在——单独dotnet workload install maui可救急但长期建议用安装器补全。版本不匹配仓库或项目里global.json锁定了 SDK 版本本机 SDK 低于它时构建直接失败先dotnet --list-sdks对齐。目标框架里找不到 windows 条目TargetFrameworks是在 Windows 机器上生成时才加入的在 Linux 上生成的项目需要手动补。认识模板项目模板工程到底给了你什么生成项目后先别急着改代码按一次 F5 看看模板跑了什么。以仓库里的 Blazor 混合方案模板src/Templates/src/templates/maui-blazor-solution/为例按下 F5 后实际发生的事是MSBuild 按TargetFrameworks里当前选中的 TFMWindows 下是net*-windows10.0.19041.0编译。MauiProgram.cs里的CreateMauiApp()被调用builder.UseMauiAppApp()挂载入口页面ConfigureFonts注册字体AddMauiBlazorWebView()把 Blazor 服务注入容器。App.xaml提供全局ResourceDictionaryMainPage.xaml被充气inflate成原生控件树。Windows 平台层Platforms/Windows/App.xaml.cs里的WinUI宿主接管窗口应用启动。真正需要你动手改的文件其实只有这几个文件改什么为什么MauiApp.1.csprojApplicationTitle、ApplicationId、ApplicationDisplayVersion、ApplicationVersion决定窗口标题栏、包标识和版本号发布前必改MauiProgram.cs注册你自己的服务和页面依赖注入的入口所有AddSingleton/AddTransient都在这MainPage.xaml/.xaml.cs首屏 UI默认是计数器演示页删掉换成你的业务页面Platforms/Windows/App.xaml.cs仅在需要 WinUI 定制时动窗口行为、生命周期钩子另外注意 csproj 里的MauiXamlInflatorSourceGen/MauiXamlInflatorXAML 在编译期直接生成 C# 代码而不是运行时充气构建和启动都会更快。如果某个页面需要运行时绑定特性比如热重载场景可以按文件单独覆盖Inflator元数据。从静态页面到真实应用先让页面对再让数据动。两件事分开做排错效率完全不同。第一步布局。模板默认的MainPage用ScrollView套VerticalStackLayout够演示但不够生产。真实业务里Grid是主力——表单、卡片、侧边栏全靠行列定义。最简形态Grid RowDefinitionsAuto,Auto,* ColumnDefinitionsAuto,*,Auto Label Grid.Row0 Grid.Column0 Text用户名 / Entry Grid.Row0 Grid.Column1 Placeholder请输入 / Label Grid.Row1 Grid.Column0 Text密码 / Entry Grid.Row1 Grid.Column1 Placeholder请输入 / Button Grid.Row2 Grid.Column0 Grid.ColumnSpan3 Text登录 / /Grid记住一条经验能用一层Grid说清楚的不要用三層嵌套StackLayout凑层级直接关系渲染开销。第二步数据绑定。页面逻辑不要写在xaml.cs里。建一个 ViewModel页面只负责声明绑定关系Label Text{Binding WelcomeMessage} /public partial class MainPage { public MainPage() { InitializeComponent(); BindingContext new MainViewModel { WelcomeMessage 你好来自 Windows 的 .NET MAUI }; } }ViewModel 属性变化时通过INotifyPropertyChanged通知刷新这是数据“动”起来的机制。仓库示例工程里有一整套 MVVM 实践可以参考src/Controls/samples/Controls.Sample/。发布前自检上线前回答三个问题发布不是最后一步的点击动作而是三个问题的答案都成立才放行。问题一它在本地机器上稳定可跑吗在 Visual Studio 里把调试目标切到本机 Windows非模拟器F5 启动走完核心流程登录、主流程、异常路径。Windows 端调试和原生 WinUI 应用一样断点、调试器控制台都可用。这一步验证的是“功能”而不是“环境”。问题二回归测试跑过吗至少给 ViewModel 和业务逻辑层补单元测试xUnit 即可重点覆盖属性变更通知和核心计算。命令行执行dotnet test红一个都不放行。UI 行为层面的验证可以等 CI 里跑设备/截图测试本地先守住逻辑层。问题三交付物是什么形态侧载Sideload项目属性里打开“打包”生成未签名的 MSIX 包适合内部团队分发接收方需要开启开发者模式安装。Microsoft Store走商店流水线包会经过签名和审核适合对外发布。MSIX 是 Windows 10/11 的现代应用包格式安装、更新、卸载都由系统统一管理比绿色文件夹专业得多。包名、版本号来自 csproj 里那几个Application*属性——这就是发布前自检清单的第一项。经验沉淀能省时间的三件事一、页面卡顿时先砍层级再查逻辑。场景长列表页面滚动掉帧第一反应总是怀疑数据加载。做法先用 Visual Studio 的诊断工具确认是不是 UI 线程被占满若是布局问题把多层嵌套StackLayout拍平成单层Grid列表类控件只加载可视区域数据。布局层级的优化收益通常比算法调整来得更快。二、控件复用靠自定义控件不靠复制粘贴。场景全应用要统一一种圆角按钮样式。做法继承Button用BindableProperty.Create声明一个新属性比如CornerRadiusXAML 里就能像原生属性一样用。一次定义所有页面受益还保留样式和绑定能力。三、把构建自动化交给脚本不靠手点。场景每次发布前手动编译、测试、打包步骤多还容易漏。做法仓库根目录的构建体系见 docs/DevelopmentTips.md提供了脚本入口build.cmd -restore -build一条命令完成恢复与构建Cake 目标可用于打包和拉起 IDEdotnet tool restore dotnet cake --targetVS把发布步骤沉淀成命令新人也能一键复现你的构建过程。.【免费下载链接】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),仅供参考
返回列表