.NET 6 Preview 3 Maui 体验

我以为的 MAUI hot reload
img
我跑出来的,哎,可以看到,完全是重新生成DLL,重新安装的
img

为什么会这样呢?看devblog,8号发布了[.NET 6 Preview 3][Announcing .NET 6 Preview 3],9号发布了 [MAUI Preview 3][Announcing .NET Multi-platform App UI Preview 3],之前就看了Scott的视频,想试下这么顺滑的mobile hot reload,虽然没有成功(原因下边会讲),但也把相关项目跑了一下,了解一下最新进展。

相关概念

MAUI: Multi-platform App UI 嗯就是字面的意思,支持多平台的APP(Windows、MacOS、Android 和 IOS)

  • MVVM:Model-View-ViewModel 就是 XAML 的模式
  • MVU:Model-View-Update (上图的演示热更新就是用的这个模式)

MAUI

maui-check

这是一个支持安装和配置 maui 的工具(包括.NET 6,Android ,IOS 的SDK 以及MAUI项目模板),不知道配置的SDK包地址是否有问题,我这边安装很慢,直接手动安装了,不想手动安装的可以试下这个工具

安装: dotnet tool install -g redth.net.maui.check
运行: maui-check --dev

或者手动安装(.NET 6SDK是必装的,其他的根据需求安装即可)

Demo

安装好需要的环境后,即可开始项目

  1. 创建MAUI项目

    1
    dotnet new maui -n mauiDemo
  2. 指定nuget包源

    因为还是预览版,所以nuget源需要单独指定下,在项目根目录下创建一个 nuget.config 文件,输入以下内容保存

    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    <packageSources>
    <add key="dotnet6" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json" />
    <add key="xamarin" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/xamarin-impl/nuget/v3/index.json" />
    </packageSources>
    </configuration>
  3. restore

    此时的项目结构

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    d-----         2021/4/21      0:12                .vscode
    d----- 2021/4/19 22:02 Android
    d----- 2021/4/19 23:22 bin
    d----- 2021/4/19 22:02 iOS
    d----- 2021/4/19 22:02 MacCatalyst
    d----- 2021/4/21 19:15 obj
    d----- 2021/4/19 22:02 Resources
    -a---- 2021/4/19 22:02 408 App.xaml
    -a---- 2021/4/19 22:02 370 App.xaml.cs
    -a---- 2021/4/21 19:15 926 demo.csproj
    -a---- 2021/4/19 22:02 288 Directory.Build.targets
    -a---- 2021/4/21 19:22 981 MainPage.xaml
    -a---- 2021/4/21 19:21 578 MainPage.xaml.cs
    -a---- 2021/4/19 22:02 240 MainWindow.cs
    -a---- 2021/4/19 22:10 348 nuget.config
    -a---- 2021/4/19 22:02 300 Startup.cs

    如过只使用某个项目,可以修改csproj中的TargetFrameworks

    1
    2
    3
    4
    5
    <Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
    + <TargetFrameworks>net6.0-android</TargetFrameworks>
    <OutputType>Exe</OutputType>
    <SingleProject>true</SingleProject>

    还原包

    1
    dotnet restore
  4. 运行

需要先启用模拟器,如果是windows调试ios项目,需要先进行ios配对(可以参考 进行调试)

不同项目,对应命令

1
2
3
dotnet build -t:Run -f net6.0-android
dotnet build -t:Run -f net6.0-ios
dotnet build -t:Run -f net6.0-maccatalyst

MVU 根据模板生成的Android项目,会有一个错误的引用

1
<Import Project="..\LibraryProjectName\LibraryProjectName.projitems" Label="Shared" />

相关issue

wiki

Currently the best experience is on macOS with VS Code and building for iOS.

REF