NET MAUI 1つのコードベース、複数のプラットフォーム[. NET MAUI 1つのコードベース、複数のプラットフォーム]

NET MAUI 1つのコードベース、複数のプラットフォーム[. NET MAUI 1つのコードベース、複数のプラットフォーム]

NET開発者は、Android、iOS、macOS、Windows用のクラス最高のクロスプラットフォームUIスタックを利用できます。

最后更新 2022/05/26 21:19
gui.h
预计阅读 11 分钟
分类
MAUI
标签
.NET C# MAUI

欢迎使用 .NET 多平台应用 UI。此版本标志着我们统一 .NET 平台的多年旅程中的新里程碑。现在,您和超过 500 万其他 .NET 开发人员拥有了针对 Android、iOS、macOS 和 Windows 的一流跨平台 UI 堆栈,以补充 .NET 工具链 (SDK) 和基类库 (BCL)。您可以使用 .NET 构建任何内容。

加入我们的 Microsoft Build 2022,我们将为你介绍使用 .NET 和 Visual Studio 为任何设备构建原生应用的所有更新。» 了解更多

これは、. NET開発者が満足できるデスクトップおよびモバイルアプリエクスペリエンスを作成するための旅の始まりに過ぎません。次のフェーズでは、. NET Frameworkと古いプロジェクトシステムのプラグイン、ライブラリ、サービスを. NET 6とSDKスタイルのプロジェクトに導入することで、より広範な. NETエコシステムの基盤が整いました。現在利用可能な製品は次のとおりです。

以下は、いくつかのリンクのスクリーンショット、リンクのより直接的なスクリーンショット、元をクリックして表示することに興味がある:

有关将库迁移到 .NET 6 的帮助,请查看最近的客座博客文章,其中详细介绍了从 Michael Rumpler (MR.Gestures)和Luis Matos(Plugin.ValidationRules)。

在 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 应用 SDK 附带的首屈一指的原生 UI 组件。

使用 C# 和 XAML 从包含 40 多个控件、布局和页面的丰富工具包生成应用。在移动控件的 Xamarin 肩膀上,.NET MAUI 添加了对多窗口桌面应用程序、菜单栏和新的动画功能、边框、角、阴影、图形等的支持。哦,还有我将在下面重点介绍的新内容:BlazorWebView。

阅读 .NET MAUI 文档中有关控件:页面、布局和视图的详细信息

アクセシビリティの優先順位

使用原生 UI 的一个主要优点是继承的辅助功能支持,我们可以在语义服务的基础上构建这些支持,以便比以往更轻松地创建高度可访问的应用程序。我们与客户密切合作,重新设计了我们的无障碍开发方式。通过这些对话,我们设计了 .NET MAUI 语义服务来控制:

  • 説明、ヒント、タイトルレベルなどのプロパティ
  • 焦点は
  • スクリーンリーダー。
  • オートメーションのプロパティ

阅读 .NET MAUI 文档中有关辅助功能语义服务的详细信息

ユーザーインターフェースを超えて

.NET MAUI 提供了简单的 API 来访问每个平台的服务和功能,例如加速计、应用操作、文件系统、通知等。在此示例中,我们配置了app actions,用于向每个平台上的应用图标添加菜单选项:

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 都是针对可扩展性而设计的,因此您绝不会碰壁。以控件为例,控件是在一个平台上以不同方式呈现的控件的规范示例。Android 会在文本字段下方绘制一条下划线,开发人员通常希望删除该下划线。使用 .NET MAUI,只需几行代码即可自定义整个项目中的一切:Entry

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

以下是最近由 Cayas Software 创建新的 Map 平台控件的一个很好的例子。这篇博客文章演示如何为控件创建处理程序,为每个平台实现,然后通过在 .NET MAUI 中注册控件来使其可用。

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

在 .NET MAUI 文档中阅读有关使用处理程序自定义控件的详细信息

生産性の近代化

何でも構築できるテクノロジーとして、. NETは共通の言語機能、パターン、プラクティス、生産性を向上させるツールを使用することも期待しています。

NET MAUIは、. NET 6で導入された新しいC#10機能を使用しています。これには、文やファイル範囲の名前空間をグローバルに使用するなど、ファイル内の混乱や乱雑さを軽減するのに最適です。. NET MAUIはマルチターゲティングを次のレベルに引き上げ、“単一のプロジェクト”に焦点を当てる必要があります。

在新的 .NET MAUI 项目中,平台位于一个子文件夹中,将重点放在您花费大部分精力的应用程序上。在项目的“资源”文件夹中,你只需一个位置即可管理应用的字体图像应用图标初始屏幕、原始资源和样式。.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 的文档:app startup with MauiProgramsingle project

デスクトップとモバイルデバイスにBlazorを導入する

.NET MAUI 也非常适合希望通过原生客户端应用程序参与其中的 Web 开发人员。NET MAUI 与 Blazor 集成,因此您可以直接在原生移动和桌面应用程序中重用现有的 Blazor Web UI 组件。借助 .NET MAUI 和 Blazor,您可以重用 Web 开发技能来构建跨平台原生客户端应用程序,并构建 UI 一致的跨移动、桌面和 Web 的应用。

NET MAUIは、デバイス上でBlazorコンポーネントをネイティブに実行し(Web Assemblyを必要とせず)、埋め込みWebビューコントロールにレンダリングします。Blazorコンポーネントは. NETプロセス内でコンパイルおよび実行されるため、Webプラットフォームに限定されず、通知、Bluetooth、位置情報およびセンサー、ファイルシステムなどのネイティブプラットフォーム機能を利用できます。Blazor Web UIの隣にネイティブUIコントロールを追加することもできます。これは全く新しいハイブリッドアプリです:Blazor Hybrid。

NET MAUIとBlazorの使用を開始するのは簡単です。付属の. NET MAUI Blazor Appプロジェクトテンプレートを使用するだけです。

此模板已全部设置,因此您可以使用 HTML、CSS 和 C# 开始构建 .NET MAUI Blazor 应用。适用于 .NET MAUI 的 Blazor 混合教程将引导您完成构建和运行第一个 .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 混合支持现在还可用于 WPF 和 Windows 窗体,因此您可以开始对现有桌面应用进行现代化改造,以便在 Web 上运行或使用 .NET MAUI 跨平台运行。WPF 和 Winfrom 的BlazorWebView控件在 NuGet 上可用。查看适用于 WPFWinform 的 Blazor 混合教程,了解如何开始使用。

若要了解有关 Blazor Hybrid 对 .NET MAUI、WPF 和 Windows 窗体的支持的更多信息,请查看 Blazor Hybrid 文档

スピードに最適化

NET MAUIはパフォーマンスを向上させるように設計されている。特にAndroidでは、できるだけ早くアプリを起動することがいかに重要かをお話ししました。NET MAUIのUIコントロールは、ネイティブプラットフォームコントロール上に合理化されたデカップリングハンドラマッパーパターンを実装します。これにより、UIレンダリングのレイヤー数が削減され、コントロールのカスタマイズが簡素化されます。

.NET MAUI 中的布局已设计为使用一致的管理器模式,该模式可优化度量值并排列循环,以便更快地呈现和更新 UI。除了 StackLayout 之外,我们还展示了针对特定场景进行预优化的布局,例如 HorizontalStackLayoutVerticalStackLayout

从此旅程的一开始,我们就设定了一个目标,即在过渡到 .NET 6 时提高启动性能并保持或减小应用大小。在正式发布时,我们的 .NET MAUI 提高了 34.9%,Android 版 .NET 提高了 39.4%。这些收益也延伸到复杂的应用程序;.NET Podcast 示例应用程序开始时启动速度为 1299 毫秒,GA 的运行速度为 814.2 毫秒,自预览版 13 以来提高了 37.3%。

これらの設定は既定でオンになっているため、リリース版に対してこれらの最適化を提供できます。

これらの結果を達成するために行った作業についての詳細なブログ記事をご覧ください。

今日から始めましょう

若要开始在 Windows 上使用 .NET MAUI,请安装 Visual Studio 2022 Preview 或更新到版本 17.3 Preview 1.1。在安装程序中,选择工作负载“.NET 多平台应用 UI 开发”。

若要在 Mac 上使用 .NET MAUI,请安装新的 Visual Studio 2022 Preview for Mac (17.3 Preview 1)。

Visual Studio 2022では、. NET MAUIツールのサポートが今年後半にリリースされる予定です。今日のWindowsでは、XAMLと. NET Hot Reload、XAML、C#、Razor、CSSなどの強力なエディタを使用して、開発サイクルをスピードアップできます。XAMLリアルタイムプレビューとリアルタイムビジュアライゼーションツリーを使用すると、デバッグ時にUIのプレビュー、位置合わせ、チェック、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 年。

資源は

フィードバックが必要です。

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

まとめまとめまとめ

借助 .NET MAUI,您可以从单个代码库构建适用于 Android、iOS、macOS 和 Windows 的本机应用程序,并使用与在 .NET 中实践的相同的生产力模式。.NET MAUI 的精简且解耦的 UI 和布局体系结构以及单个项目功能使您能够专注于一个应用程序,而不是同时处理多个平台的独特需求。借助 .NET 6,我们不仅为 Android 提供了性能改进,而且还为整个平台目标提供了性能改进。

プラットフォームコードの削減、コードの共有、一貫した標準とパターン、軽量で高性能なアーキテクチャ、モバイルとデスクトップのネイティブエクスペリエンス-これは始まりに過ぎません。今後数ヶ月のうちに、ライブラリとより広範なエコシステムが. NET MAUIとともに、. NET開発者のためのクロスプラットフォームアプリケーション開発の新しい時代を定義し、あなたとあなたの組織がより多くのことを達成できるようにすることを楽しみにしています。

立即体验

ブログパークからの転載

原文:https//www.cnblogs.com/springhgui/p/16304492.html

オリジナルタイトル:Gui.h

翻译原文地址:https://devblogs.microsoft.com/dotnet/introducing-dotnet-maui-one-codebase-many-platforms/

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2024/04/11

NET MAUIオープンソースUIツールキット-Uranium

私は. NET MAUI関連のUIフレームワークを共有するためにWeChatパブリックアカウントのバックグラウンドメッセージに小さなパートナーを持っていました。今日、Dayaoは. NET MAUIオープンソース、無料のUIツールキットを共有しました。

继续阅读
同分类 / 同标签 2023/01/12

Maui Blazorはカメラを使用して

Maui BlazorのインターフェイスはWebViewでレンダリングされるため、ネイティブカメラはインターフェイスコンポーネントをバインドする必要があるため、Androidカメラを使用するとアクセスできません。

继续阅读