关于microsoft:里程碑事件丨NET-MAUI-正式发布

50次阅读

共计 8678 个字符,预计需要花费 22 分钟才能阅读完成。

欢送应用 .NET 多平台应用程序 UI。此版本标记着咱们在对立 .NET 平台的多年旅程中的新里程碑。当初,您和超过 500 万其余 .NET 开发人员领有面向 Android、iOS、macOS 和 Windows 的一流跨平台 UI 堆栈,以补充 .NET 工具链 (SDK) 和基类库 (BCL)。您能够应用 .NET 构建任何货色。

退出咱们的 Microsoft Build 2022,咱们将向您介绍所有更新,以便应用 .NET 和 Visual Studio 为任何设施构建本机应用程序,学习更多。

这只是咱们创立令 .NET 开发人员称心的桌面和挪动应用程序体验之旅的开始。对于下一阶段,当初为更宽泛的 .NET 生态系统奠定了根底,将 .NET Framework 和旧我的项目零碎中的插件、库和服务引入 .NET 6 和 SDK 款式我的项目。明天可用的有:



  • AndroidX
    https://github.com/xamarin/An…
  • AlohaKit
    https://github.com/jsuarezrui…
  • CommunityToolkit.MVVM
    https://docs.microsoft.com/wi…
  • CommunityToolkit.Maui
    https://docs.microsoft.com/do…
  • CommunityToolkit MauiCompat
    https://www.nuget.org/package…
  • CommunityToolkit Markup.MauiCompat
    https://www.nuget.org/package…
  • DevExpress
    https://www.devexpress.com/maui/
  • Facebook
    https://github.com/xamarin/Fa…
  • FreshMvvm.Maui
    https://www.nuget.org/package…
  • Google APIs for iOS
    https://github.com/xamarin/Go…
  • Google Play Services Client Libraries
    https://github.com/xamarin/Go…
  • GrialKit
    https://grialkit.com/grial4-s…
  • MauiAnimation
    https://github.com/jsuarezrui…
  • Microsoft.Maui.Graphics
    https://docs.microsoft.com/do…
  • MR.Gestures
    https://www.mrgestures.com/
  • Prism.Maui
    https://www.nuget.org/package…
  • Plugin.Fingerprint
    https://www.nuget.org/package…
  • Plugin.InAppBilling
    https://www.nuget.org/package…
  • Plugin.StoreReview
    https://www.nuget.org/package…
  • Plugin.ValidationRules
    https://www.nuget.org/package…
  • ReactiveUI.Maui
    https://www.nuget.org/package…
  • Shiny
    https://shinylib.net/
  • SkiaSharp
    https://github.com/mono/SkiaS…
  • Syncfusion
    https://www.syncfusion.com/ma…
  • Telerik UI for .NET MAUI
    https://www.telerik.com/maui-…
  • TemplateUI
    https://github.com/jsuarezrui…
  • User Dialogs
    https://github.com/aritchie/u…

如需帮忙将库迁徙到 .NET 6,请查看最近的博客文章,具体介绍了 Michael Rumpler (MR.Gestures) 和 Luis Matos (Plugin.ValidationRules) 迁徙到 .NET MAUI 库的体验。

以后 18 个月的公布打算齐全反对 .NET MAUI 工作负载,并将依照与 .NET 雷同的节奏提供服务。咱们对 .NET MAUI 的继续关注依然是品质、解决已知问题并依据您的反馈确定问题的优先级。这还包含咱们为构建专门针对 Android、Android Wear、CarPlay、iOS、macOS 和 tvOS 的应用程序而交付的工作负载,这些应用程序间接应用来自 .NET 的本机工具包,以及反对库 AndroidX、Facebook、Firebase、Google Play Services 和 Skiasharp。

应用 .NET MAUI,您能够实现不折不扣的用户体验,同时共享比以往更多的代码。.NET MAUI 通过每个平台提供的次要利用工具包、古代开发人员生产力和咱们迄今为止最快的挪动平台应用本机 UI。

原生 UI,不斗争

.NET MAUI 的次要指标是让您可能交付每个平台(Android、iOS、macOS 和 Windows)专门设计的最佳利用体验,同时让您可能通过丰盛的款式和图形打造统一的品牌体验。开箱即用,每个平台的外观和行为都合乎其应有的形式,无需任何额定的小部件或款式来模拟。例如,Windows 上的 .NET MAUI 由 WinUI 3 提供反对,WinUI 3 是 Windows App SDK 附带的次要本机 UI 组件。

应用 C# 和 XAML 从蕴含 40 多个控件、布局和页面的丰盛工具包构建您的应用程序。在挪动控件的 Xamarin 肩膀上,.NET MAUI 减少了对多窗口桌面应用程序、菜单栏和新动画性能、边框、角落、暗影、图形等的反对。哦,还有我将在上面重点介绍的新 BlazorWebView。

浏览 .NET MAUI 文档中无关控件的更多信息:页面、布局和视图。

可拜访性优先

应用原生 UI 的一个次要劣势是继承的可拜访性反对,咱们能够在 语义服务 的根底上构建它,从而比以往更容易创立高度可拜访的应用程序。咱们与客户密切合作,从新设计咱们开发可拜访性的形式。从这些对话中,咱们设计了 .NET MAUI 语义服务来管制:

  • 形容、提醒和题目级别等属性
  • 聚焦
  • 屏幕阅读器
  • 自动化属性
    浏览 .NET MAUI 文档中无关可拜访性语义服务的更多信息。

超过用户界面

.NET MAUI 提供简略的 API 来拜访每个平台的服务和性能,例如加速度计、应用程序操作、文件系统、告诉等等。在此示例中,咱们配置“应用程序操作”,为每个平台上的应用程序图标增加菜单选项:

AppActions.SetAsync(new AppAction("current_info", "Check Current Weather", icon: "current_info"),

    new AppAction("add_location", "Add a Location", icon: "add_location")

);


浏览 .NET MAUI 文档中无关拜访台服务和性能的更多信息。

轻松定制

无论您是扩大 .NET MAUI 控件的性能还是建设新的平台性能,.NET MAUI 的架构都具备可扩展性,因而您永远不会碰壁。举个例子,Entry 控件——一个在一个平台上出现不同的控件的标准示例。Android 会在文本字段下方绘制下划线,开发人员通常心愿删除该下划线。应用 .NET MAUI,自定义整个我的项目中的每个条目只需几行代码:

#if ANDROID
Microsoft.Maui.Handlers.EntryHandler.Mapper.ModifyMapping("NoUnderline", (h, v) =>
{h.PlatformView.BackgroundTintList = ColorStateList.ValueOf(Colors.Transparent.ToPlatform());
});
#endif


这是最近由 Cayas Software 创立新地图平台控件的一个很好的示例。博客文章演示了为控件创立处理程序、为每个平台实现,而后通过在 .NET MAUI 中注册控件来使其可用。

.ConfigureMauiHandlers(handlers =>
{handlers.AddHandler(typeof(MapHandlerDemo.Maps.Map),typeof(MapHandler));
})


浏览 .NET MAUI 文档中无关应用处理程序自定义控件的更多信息

古代开发人员生产力

.NET 不仅仅是一种能够构建任何货色的技术,咱们还心愿 .NET 可能应用通用语言个性、模式和实际以及工具来进步您的生产力。

.NET MAUI 应用 .NET 6 中引入的新 C# 10 性能,包含全局 using 语句和文件范畴命名空间 – 十分有助于缩小文件中的凌乱和芜杂。.NET MAUI 以“繁多我的项目”为重点,将多指标晋升到了一个新的程度。

在新的 .NET MAUI 我的项目中,平台位于一个子文件夹中,将重点放在您破费大部分精力的应用程序上。在我的项目的 Resources 文件夹中,您能够在一个中央管理应用程序的字体、图像、应用程序图标、启动屏幕、原始资源和款式。.NET MAUI 将针对每个平台的独特需要进行优化。

 

 多我的项目 vs 单我的项目: 依然反对为每个平台应用独自的我的项目来构建您的解决方案,因而您能够抉择单我的项目办法来开发您的应用程序。

.NET MAUI 应用在 ASP.NET 和 Blazor 应用程序中风行于 Microsoft.Extensions 库的构建器模式作为初始化和配置应用程序的繁多地位。从这里,您能够为 .NET MAUI 提供您的字体、利用平台特定的生命周期事件、配置依赖项、启用特定性能、启用供应商管制工具包等。

public static class MauiProgram
{public static MauiApp CreateMauiApp()
    {var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureServices()
            .ConfigureFonts(fonts =>
            {fonts.AddFont("Segoe-Ui-Bold.ttf", "SegoeUiBold");
                fonts.AddFont("Segoe-Ui-Regular.ttf", "SegoeUiRegular");
                fonts.AddFont("Segoe-Ui-Semibold.ttf", "SegoeUiSemibold");
                fonts.AddFont("Segoe-Ui-Semilight.ttf", "SegoeUiSemilight");
            });

        return builder.Build();}
}
public static class ServicesExtensions
{public static MauiAppBuilder ConfigureServices(this MauiAppBuilder builder)
    {builder.Services.AddMauiBlazorWebView();
        builder.Services.AddSingleton<SubscriptionsService>();
        builder.Services.AddSingleton<ShowsService>();
        builder.Services.AddSingleton<ListenLaterService>();
#if WINDOWS
        builder.Services.TryAddSingleton<SharedMauiLib.INativeAudioService, SharedMauiLib.Platforms.Windows.NativeAudioService>();
#elif ANDROID
        builder.Services.TryAddSingleton<SharedMauiLib.INativeAudioService, SharedMauiLib.Platforms.Android.NativeAudioService>();
#elif MACCATALYST
        builder.Services.TryAddSingleton<SharedMauiLib.INativeAudioService, SharedMauiLib.Platforms.MacCatalyst.NativeAudioService>();
        builder.Services.TryAddSingleton< Platforms.MacCatalyst.ConnectivityService>();
#elif IOS
        builder.Services.TryAddSingleton<SharedMauiLib.INativeAudioService, SharedMauiLib.Platforms.iOS.NativeAudioService>();
#endif

        builder.Services.TryAddTransient<WifiOptionsService>();
        builder.Services.TryAddSingleton<PlayerService>();

        builder.Services.AddScoped<ThemeInterop>();
        builder.Services.AddScoped<ClipboardInterop>();
        builder.Services.AddScoped<ListenTogetherHubClient>(_ =>
            new ListenTogetherHubClient(Config.ListenTogetherUrl));


        return builder;
    }
}

在 .NET MAUI 文档中浏览无关应用 MauiProgram 和单个我的项目启动应用程序的更多信息。

将 Blazor 带入桌面和挪动设施

.NET MAUI 也非常适合心愿通过本机客户端应用程序参加其中的 Web 开发人员。.NET MAUI 与 Blazor 集成,因而您能够间接在本机挪动和桌面应用程序中重用现有的 Blazor Web UI 组件。借助 .NET MAUI 和 Blazor,您能够重用您的 Web 开发技能来构建跨平台的本机客户端应用程序,并构建跨挪动、桌面和 Web 的繁多 UI。

.NET MAUI 在设施上本地执行 Blazor 组件(不须要 WebAssembly)并将它们出现到嵌入式 Web 视图控件。因为您的 Blazor 组件在 .NET 过程中编译和执行,所以它们不限于 Web 平台,并且能够利用任何本机平台性能,例如告诉、蓝牙、地理位置和传感器、文件系统等等。您甚至能够在 Blazor Web UI 旁边增加本机 UI 控件。这是一种全新的混合应用程序:Blazor Hybrid!

开始应用 .NET MAUI 和 Blazor 很简略:只需应用随附的 .NET MAUI Blazor 应用程序我的项目模板。

此模板已全副设置好,因而您能够开始应用 HTML、CSS 和 C# 构建 .NET MAUI Blazor 应用程序。.NET MAUI 的 Blazor Hybrid 教程将疏导您构建和运行您的第一个 .NET MAUI Blazor 应用程序。

或者,将 BlazorWebView 控件增加到现有的 .NET MAUI 应用程序,无论您想在哪里开始应用 Blazor 组件:

<BlazorWebView HostPage="wwwroot/index.html">
    <BlazorWebView.RootComponents>
        <RootComponent Selector="#app" ComponentType="{x:Type my:Counter}" />
    </BlazorWebView.RootComponents>
</BlazorWebView>

Blazor Hybrid 反对当初也可用于 WPF 和 Windows 窗体,因而您能够开始对现有桌面应用程序进行现代化革新以在 Web 上运行或应用 .NET MAUI 跨平台运行。实用于 WPF 和 Windows 窗体的 BlazorWebView 控件在 NuGet 上可用。查看 WPF 和 Windows 窗体的 Blazor Hybrid 教程,理解如何开始。

若要具体理解 Blazor Hybrid 对 .NET MAUI、WPF 和 Windows 窗体的反对,请查看 Blazor Hybrid 文档。

针对速度进行了优化

.NET MAUI 专为进步性能而设计。您曾经通知咱们,让您的应用程序尽快启动十分重要,尤其是在 Android 上。.NET MAUI 中的 UI 控件在本机平台控件上实现了一种精简的、解耦的处理程序映射器模式。这缩小了 UI 渲染中的层数,并简化了控件定制。

.NET MAUI 中的布局已被设计为应用统一的管理器模式来优化度量并安顿循环以更快地出现和更新您的 UI。除了 StackLayout 之外,咱们还展现了针对特定场景进行预优化的布局,例如 HorizontalStackLayout 和 VerticalStackLayout。

从这个旅程的一开始,咱们就设定了一个指标,即在过渡到 .NET 6 时进步启动性能并放弃或减小应用程序大小。在 GA 时,咱们曾经实现了 34.9% 的 .NET MAUI 和 39.4 改良.NET for Android 的改良百分比。这些收益也扩大到简单的应用程序;.NET Podcast 示例应用程序的启动工夫为 1299 毫秒,GA 时为 814.2 毫秒,自 Preview 13 以来进步了 37.3%。

默认状况下启用这些设置以提供具备这些优化的公布版本。

请持续关注咱们为实现这些后果所做的深刻博客文章。

明天开始

要开始在 Windows 上应用 .NET MAUI,请装置 Visual Studio 2022 Preview 或将其更新到版本 17.3 Preview 1.1。在安装程序中,抉择工作负载“.NET Multi-platform App UI development”。

要在 Mac 上应用 .NET MAUI,请装置实用于 Mac 的新 Visual Studio 2022 预览版(17.3 预览版 1)。

Visual Studio 2022 将在往年晚些时候反对 GA .NET MAUI 工具。在明天的 Windows 上,您能够应用 XAML 和 .NET Hot Reload 以及用于 XAML、C#、Razor 和 CSS 等的弱小编辑器来减速您的开发循环。应用 XAML 实时预览和实时可视树,您能够预览、对齐、查看您的 UI,并在调试时对其进行编辑。.NET MAUI 的新单我的项目体验当初包含我的项目属性页,可提供可视化编辑体验,以便为您的利用配置多平台定位。

在 Mac 上,您当初能够加载单我的项目和多我的项目 .NET MAUI 解决方案,以应用丑陋的全新原生 Visual Studio 2022 for Mac 体验进行调试。用于进步您开发 .NET MAUI 应用程序的生产力的其余性能将在后续预览版中提供。

咱们倡议立刻开始将您的库更新为 .NET MAUI 并创立新的 .NET MAUI 我的项目。在深入研究将 Xamarin 我的项目转换为 .NET MAUI 之前,请查看您的依赖项、Visual Studio 对 .NET MAUI 的反对状态以及已公布的已知问题,以确定转换的正确工夫。请记住,古代生命周期策略将持续反对 Xamarin,该策略规定距上一个次要版本 2 年。

资源

  • .NET MAUI – 研讨会
    https://github.com/dotnet-pre…
  • 构建您的第一个 .NET MAUI 应用程序
    https://dotnet.microsoft.com/…
  • 文档
    https://docs.microsoft.com/do…
  • 已知的问题
    https://github.com/dotnet/mau…
  • 微软学习门路
    https://docs.microsoft.com/le…
  • 问答论坛
    https://docs.microsoft.com/an…
  • 发行阐明
    https://github.com/dotnet/mau…
  • 示例
    https://github.com/dotnet/mau…
  • 反对政策 – .NET MAUI
    https://dotnet.microsoft.com/…
  • 反对政策 – Xamarin
    https://dotnet.microsoft.com/…

咱们须要您的反馈

咱们很乐意听取您的意见!当您遇到任何问题时,请在 GitHub 上的 dotnet/maui 上提交报告。

概括

借助 .NET MAUI,您能够应用在 .NET 中实际的雷同生产力模式,从单个代码库构建实用于 Android、iOS、macOS 和 Windows 的本机应用程序。.NET MAUI 的瘦且拆散的 UI 和布局架构以及单个我的项目性能使您可能专一于一个应用程序,而不是同时兼顾多个平台的独特需要。借助 .NET 6,咱们不仅为 Android 提供了性能改良,而且还针对所有平台指标进行了改良。

更少的平台代码、更多的共享代码、统一的规范和模式、轻量级和高性能架构、挪动和桌面原生体验——这仅仅是开始。咱们期待在接下来的几个月中看到库和更宽泛的生态系统与 .NET MAUI 一起为 .NET 开发人员定义跨平台利用程序开发的新时代,使您和您的组织可能实现更多指标。

关注微软中国 MSDN 理解更多  

.NET MAUI

正文完
 0