MAUI + MASA Blazor .NET8 升级指南

发布时间 2023-11-17 14:35:46作者: sunday866


前言

Net8 修复了MAUI中的很多Bug,还增加了很多新功能,例如:AndroidStripILAfterAOT、AndroidEnableMarshalMethods 和 NativeAOT for iOS。这些改进针对MAUI应用的性能和体积都做了优化。更多内容请参考下面连接

https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-in-dotnet-8/

本文着重介绍从MAUI + MASA Blazor 从.NET7升级到.NET8的具体步骤和注意事项

准备

1、首先确保已经将VS升级到Visual Studio 2022 17.8版本以上。

如果你使用的是 Visual Studio Code,请确保安装了最新的.NET MAUI extension
https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.dotnet-maui

2、下载安装.NET8.0

https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0

升级项目

1、将项目的目标.NET运行时修改为net8.0


当然如果项目很多可以在项目.csproj文件中批量替换net7.0 -> net8.0 例如net7.0-ios -> net8.0-ios

2、添加依赖包引用

在MAUI .NET8.0中使用UseMaui不会自动添加相关MAUI的引用包,需要手动在MAUI项目文件中添加
如下两个包的引用

<PackageReference Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebView.Maui" Version="$(MauiVersion)" />

如果有MAUI的类库项目,也需要添加对Microsoft.Maui.Controls包的引用

3、升级依赖包

1、升级MASA Blazor到最新的1.2.2
2、升级Microsoft.AspNetCore.Components.Web到最新的 8.0.0
3、升级Microsoft.AspNetCore.Components.WebView.Maui 到最新的 8.0.3

4、升级Xcode

升级Xcode到最新的15.1,需要系统13.5以上
如果Xcode安装后下载iOS 17 Simulator总是失败,可以登录

https://developer.apple.com/download/all/

使用下载工具下载对应的 iOS 17.0.1 Simulator Runtime

然后在终端使用命令安装

xcrun simctl runtime add "iOS_17.0.1_Simulator_Runtime.dmg"

安装需要大约3分钟
然后就可以在Xcode的Setting -> Platforms中看到iOS_17.0.1_Simulator了

5、测试打包

dotnet publish -f:net8.0-android -c:Release /p:AndroidSdkDirectory=D:\Android\android-sdk /p:PublishDir=.\Publish\Android
dotnet publish -f:net8.0-ios -c:Debug -v:n /p:ServerAddress={Mac_ip} /p:ServerUser={Mac用户名} /p:ServerPassword={Mac密码}/p:TcpPort=58181 /p:ArchiveOnBuild=true /p:_DotNetRootRemoteDirectory=/Users/{Mac用户名}/Library/Caches/Xamarin/XMA/SDKs/dotnet/ /p:PublishDir=.\Publish\iOS

我这里使用命令行进行打包,这里唯一需要注意的是,.NET8 开始 dotnet publish默认为Release,需要注意
经过测试打包正常,运行正常,应用体积无明显变化,关于.NET8新增的AOT相关优化参数可以减少生成的应用体积,可以自行尝试。