最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

新消息丨.NET MAUI

来源:博客园

.NET MAUI是什么

  • 微软通过收购Xamarin后将其融于到了.Net MAUI中,最大的优点就是一套代码可以多平台共享,个人理解,展示样式(前端展示部分)是Xamarin.Forms的改进版,中间部分是接口层,用于统一接口,再往下就是每个系统相对对立的部分,例如非Windows环境是由Mono实现的,但Android、iOS 和 macOS在部署Mono时也会有配置偏差。
  • VS2022创建项目时.NET MAUI和.NET MAUI Blazor的不同
    • .NET MAUI 应用:
      • Android 5.0 (API 21) 或更高版本。
      • iOS 11 或更高版本,使用最新版本的 Xcode。
      • 使用 Mac Catalyst 的 macOS 10.15 或更高版本。
      • 使用 Windows UI 库 (WinUI) 3 Windows 11和Windows 10版本 1809 或更高版本。
    • .NET MAUI Blazor 应用具有以下附加平台要求:
      • 需要 Android 7.0 (API 24) 或更高版本
      • 需要 iOS 14 或更高版本。
      • 使用 Mac Catalyst 的 macOS 11 或更高版本。

准备工作

  1. 下载Visual Studio 2022 17.3 或更高版本,注意:生成IOS软件需要Mac系统(Xcode 版本要兼容),且需要Apple ID 和开发人员注册(付费的)才能部署并提交到Apple Store。


    (资料图片)

  2. 在安装vs2022时需要勾选MAUI开发,如下图所示:

  3. 安装前请先看看磁盘够不够大,光MAUI这一项就要7个G,不加其他选项。另外vs2022会有版本升级,因此建议磁盘在预装vs2022时系统盘够大,且设置安装位置时尽量不要放在系统盘中,如下图所示:

  4. 目前MAUI还处于成长阶段,最大的优势就是微软原生且集成了Blazor,更新可能会很频繁。

简单创建

打开vs2022,文件->新建->项目,或者直接使用快捷键Ctrl+Shift+N,新建一个新项目。

在创建新项目搜索项中输入mui,会出现三个与maui相关的新建项目,分别为

  • .net maui

    基于Xamarin.Forms的迭代版本,与Flutter类似

    路由创建:根据Route属性或者通过 Routing.RegisterRoute显式的注册。

    路由调用:Shell.Current.GoToAsync(nameof(ContentPage))

  • .net maui Blazor

    基于各平台WebView组件

    路由创建:在组件上,使用@page指令指定

    路由调用:

    • @inject NavigationManager navigationManager
    • navigationManager.NavigateTo("/Counter");
  • .net maui 类

    生成可被引用的dll

新建项目公共部分

Propertis项目资源管理器

Platforms各平台配置文件夹

  • 各平台相关权限配置

Resources静态资源

.NET MAUI

创建项目后,系统会自带可运行的简单demo

App.xaml :主框架,可设置程序的资源属性,例如资源字典值等

AppShell.xaml :主框架的壳,用于放置路由

MainPage.xaml :默认显示的主页,继承ContentPage类

MauiProgram.cs:主程序入口,写法与.net core程序一致

系统启动流程如下:

  1. 调用MauiProgram的CreateMauiApp方法获得MauiApp,期间会通过UseMauiApp方法加载主框架(App.xaml)
  2. App.xaml中需要对MainPage对象进行实例化,自带例子中是实例化为了AppShell.xmal,只要继承了Page类的都可以赋值给MainPage
  3. AppShell.xaml中设置了路由(Route="MainPage"),跳转到了MainPage.xaml
  4. MainPage页面信息进行了展示。

.NET MAUI Blazor

创建项目后,系统会自带可运行demo

wwwroot:存放静态资源的文件夹

Data文件夹:数据模拟

Pages文件夹 :页面

Shared文件夹:全局页面

​MainLayout.razor:布局

​NavMenu..razor:菜单

​SurveyPrompt.razor:组件

_Imports.razor :全局引用

App.xaml:主框架,可设置程序的资源属性,例如资源字典值等

Main.razor :默认页调用的类

MainPage.xaml :默认页

MauiProgram.cs:主函数入库,调用了Blazor

系统启动流程:

  1. 系统调用MauiProgram类的CreateMauiApp方法返回MauiApp,其中UseMauiApp引用Application类(App.xaml)
  2. App.xaml中MainPage实例化了MainPage.xaml类
  3. MainPage.xaml类中通过组件的形式加载了Main.razor(),此刻就开启了Blazor的相关页面
  4. Main.razor中路由通过获取@page的类来收集路由,默认使用MainLayout框架
  5. MainLayout框架中引用了MavMenu.razor,用来展示左侧菜单
  6. MavMenu.razor中默认的是跳转到href=""中,也就是Index.razor
  7. Index.razor中使用了SurveyPrompt组件,为SurveyPrompt.razor的类

wwwroot的index.html中为浏览器和c#交互的js

关键词: 新建项目 准备工作 系统启动