Xamarin 社区团队发布了的两个新的工具包 MAUI 兼容版本

2022-12-07 19:45:06 浏览数 (1)

原文:

https://devblogs.microsoft.com/xamarin/introducing-net-maui-compatibility-for-the-xamarin-community-toolkit/?WT.mc_id=WDIT-MVP-5004326

Xamarin.CommunityToolkit.MauiCompat

Xamarin.CommunityToolkit.Markup.MauiCompat

这些 MauiCompat 库与最新版本的 Xamarin.CommunityToolkit 保持一致;主要区别在于这些适用于您的 .NET MAUI 应用程序,而 Xamarin.CommunityToolkit 适用于您的 Xamrain.Forms 应用程序。

今天的 MauiCompat 版本包括对 iOS 和 Android 的支持。未来的 MauiCompat 版本将包括对 iOS、Android、macOS 和 UWP 的支持。

Xamarin.Community.Toolkit

Xamarin.CommunityToolkit.MauiCompat

Xamarin.Community.Toolkit.Markup

Xamarin.CommunityToolkit.Markup.MauiCompat

Dependency

Xamarin.Forms

.NET MAUI

Xamarin.Forms

.NET MAUI

Native Implementation

Custom Renderer

Custom Renderer

Custom Renderer

Custom Renderer

Target

.NET Standard 1.0 (Same as Xamarin.Forms)

.NET 6.0 (Same as .NET MAUI)

.NET Standard 1.0 (Same as Xamarin.Forms)

.NET 6.0 (Same as .NET MAUI)

Platforms

iOS, Android, GTK#, Tizen, UWP, WPF (Same as Xamarin.Forms)

iOS, Android, Windows (in progress), macOS (in progress) (Same as .NET MAUI)

iOS, Android, GTK#, Tizen, UWP, WPF (Same as Xamarin.Forms)

iOS, Android, Windows (in progress), macOS (in progress) (Same as .NET MAUI)

哪些应用程序应该使用 MauiCompat?

✅ 现有的 Xamarin.Forms 应用迁移到 .NET MAUI MauiCompat 库是作为从 Xamarin.Forms 迁移到 .NET MAUI 的一个有用步骤而创建的。这些库确保你可以在 .NET MAUI 应用程序中访问 Xamarin.CommunityToolkit 的所有功能,而不会破坏更改,从而帮助你更轻松地迁移到 .NET MAUI。

我们建议最终将 Xamarin.CommunityToolkit.MauiCompat 替换为新的 .NET MAUI 工具包 CommunityToolkit.Maui,以利用新功能和优化(请参见下面的图表)。

❌ 全新的 .NET MAUI 应用程序 对于新的(又名绿地).NET MAUI 应用程序,请使用新的 .NET MAUI 社区工具包,该工具包针对 .NET MAUI 进行了全面优化,而不是 Xamarin.CommunityToolkit.MauiCompat。

Xamarin.CommunityToolkit.MauiCompat vs CommunityToolkit.Maui

Xamarin.CommunityToolkit.MauiCompat

CommunityToolkit.Maui

Future Updates

Only Bug Fixes

New Features Bug Fixes

Native Implementation

Custom Renderer

Handlers

Uses Microsoft.Maui.Controls.Compatibility?

Yes

No

Road Map

Will be deprecated alongside Xamarin.Forms November 2022

Periodic Updates Maintenance Releases Alongside .NET MAUI (I.e. No planned deprecation schedule)

MauiCompat 入门

这两个 MauiCompat 库都可以作为 NuGet 包使用,可以添加到任何面向 net6.0-ios 和 net6.0-android 的 .NET 6 项目中:

Xamarin.CommunityToolkit.MauiCompat

Xamarin.CommunityToolkit.Markup.MauiCompat

NuGet Package

https://www.nuget.org/packages/Xamarin.CommunityToolkit.MauiCompat/

https://www.nuget.org/packages/Xamarin.CommunityToolkit.Markup.MauiCompat/

1.在 Visual Studio 中打开现有项目

2.在 Visual Studio 包管理器控制台中,输入以下命令:

  • Install-Package Xamarin.CommunityToolkit.MauiCompat

安装包 Xamarin.CommunityToolkit.MauiCompat 或者

  • Install-Package Xamarin.CommunityToolkit.Markup.MauiCompat

安装包 Xamarin.CommunityToolkit.Markup.MauiCompat 要将命名空间添加到工具包:

  • using Xamarin.CommunityToolkit.Markup;

在您的 C# 页面中,添加在您的 XAML 页面中,添加命名空间属性:

  • xmlns:xct="http://xamarin.com/schemas/2020/toolkit"

使用 Xamarin.CommunityToolkit;或者使用 Xamarin.CommunityToolkit.Markup;

4.在 Startup.cs 文件中注册要使用的渲染器。您可以只注册实际需要的渲染器,也可以注册 Xamarin 社区工具包内的所有渲染器。看看下面的代码片段如何做到这两点。

代码语言:javascript复制
public void Configure(IAppHostBuilder appBuilder)
{
    appBuilder
    .UseMauiApp<App>()
    .ConfigureMauiHandlers(handlers =>
    {
        // Register ALL handlers in the Xamarin Community Toolkit assembly
        handlers.AddCompatibilityRenderers(typeof(Xamarin.CommunityToolkit.UI.Views.MediaElementRenderer).Assembly)


        // Register just one handler for the control you need
        handlers.AddCompatibilityRenderer(typeof(Xamarin.CommunityToolkit.UI.Views.MediaElement), typeof(Xamarin.CommunityToolkit.UI.Views.MediaElementRenderer));
    });
}

查看文档的其余部分以了解有关实现特定功能的更多信息:https://docs.microsoft.com/xamarin/community-toolkit/

很高兴知道

我们已经在 alpha 标签下发布了这个包。因为这个 MauiCompat 包是与 .NET MAUI 的预览版一起构建的,所以仍然有一些东西需要在双方蚀刻。我们现在发布此版本,以便我们可以尽早获得您的反馈,并确保 MauiCompat Toolkit 在 .NET MAUI 发布时已准备好使用。

非渲染器控件

有些控件不需要(单独的)渲染器,即 Shield。目前不支持这些控件。我们有一个

标记应该有效

该包应该可以正常工作,因为它不依赖于渲染器。我们确实使它与所有当前的 .NET MAUI 更改和命名空间兼容,因此您可以像以前一样继续享受标记扩展。

其他已知问题和报告问题

在 .NET MAUI 中,对象发生了变化。因此,该领域可能存在一些问题,尽管您在外面可能并不明显。每当您遇到 a 时,您可能想尝试将控件的所有颜色属性设置为显式值,看看是否能解决问题。如果没有,请告诉我们您所看到的内容,以便我们查看。ColorNullReferenceException

如果您发现任何问题,请在常规 Xamarin.CommunityToolkit 存储库中报告它们,但请确保您提到这与包有关,以便我们知道在哪里查找问题。MauiCompat

发布时间表

展望未来,我们将与 Xamarin.CommunityToolkit 和 Xamarin.CommunityToolkit.Markup.MauiCompat 的每个新版本一起发布 NuGet 包

例如,Xamarin.CommunityToolkit 的最新版本是 v1.3.0-pre2,因此今天的 Xamarin.CommunityToolkit.MauiCompat 版本也是 v1.3.0-alpha2。现在唯一的细微差别是 and 标记。这在未来的版本中应该更符合。prealpha

为了使发布包与 保持一致,我们按照以下步骤操作:MauiCompatXamarin.CommunityToolkit

从最新的 Xamarin.CommunityToolkit 版本(又名 Git 标签)分支 这确保库中的逻辑与 releaseMauiCompatXamarin.CommunityToolkit 中的逻辑完全匹配 将 Xamarin.Forms 依赖项替换为 .NET MAUI 依赖项

代码语言:javascript复制
<PackageReferenceInclude="Xamarin.Forms" />
     <UseMaui>true</UseMaui>

更新到 .NET 6

代码语言:javascript复制
<TargetFramework>netstandard2.1</TargetFramework>
<TargetFrameworks>net6.0-ios;net6.0-android</TargetFramework>

更新命名空间

使用 Xamarin.Forms -> 使用 Microsoft.Maui (在我们单独更新为 Xamarin.Forms.Mirosoft.Maui. 的特定文件中也有一些引用)

我们记录了转换为 的步骤,您可以在此处找到它们:

  • https://github.com/xamarin/XamarinCommunityToolkit/blob/main/MauiCompatSteps.mdXamarin.CommunityToolkitXamarin.CommunityToolkit.MauiCompat

概括

将现有 Xamarin.Forms 应用程序迁移到 .NET MAUI 时,请利用这些库。它们包含与其对应物相同的逻辑,针对 .NET MAUI 而不是 Xamarin.Forms.MauiCompatXamarin.CommunityToolkit。

最终,您将希望迁移到 .NET MAUI 工具包以利用新功能和优化,因为我们将在 2022 年 11 月与 Xamarin.Forms 一起停用这些库MauiCompat。

0 人点赞