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 应用程序。
或者在您想开始使用 Blazor 组件的任何位置向现有 .NET MAUI 应用添加控件:BlazorWebView
<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。我们还展示了针对特定场景预先优化的布局,HorizontalStackLayout
例如VerticalStackLayout
.StackLayout
从这个旅程的一开始,我们就设定了一个目标,即在过渡到 .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 – 研讨会
构建您的第一个 .NET MAUI 应用程序
已知的问题
微软学习路径
支持政策 – .NET MAUI
支持政策 – Xamarin
我们需要您的反馈
我们很乐意听取您的意见!当您遇到任何问题时,请在 GitHub 上的dotnet/maui提交报告。
使用.NET MAUI,您可以使用在 .NET 中实践的相同生产力模式,从单个代码库构建适用于 Android、iOS、macOS、Tizen 和 Windows 的本机应用程序。.NET MAUI 的瘦且分离的 UI 和布局架构以及单个项目功能使您能够专注于一个应用程序,而不是同时处理多个平台的独特需求。借助 .NET 6,我们不仅为 Android 提供了性能改进,而且还针对所有平台目标进行了改进。
更少的平台代码、更多的共享代码、一致的标准和模式、轻量级和高性能架构、移动和桌面原生体验——这仅仅是开始。我们期待在接下来的几个月中看到库和更广泛的生态系统与 .NET MAUI 一起为 .NET 开发人员定义跨平台应用程序开发的新时代,使您和您的组织能够实现更多目标。
感谢您的阅读,如果您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是yswenli 。