如何在 iOS 和 Mac Catalyst 上将普通的 Xamarin.iOS 解决方案(没有 Xamarin Forms)更新为 .net 6(没有 MAUI)到 运行?

How to update a plain Xamarin.iOS solution (without Xamarin Forms) to .net 6 (without MAUI) to run on iOS and Mac Catalyst?

我有一个 Xamarin.iOS 解决方案,其中包括一个库项目和一个可执行文件。该解决方案不使用 Xamarin Forms,即所谓的“Xamarin Native”解决方案。

我想将其升级为 .net 6 解决方案。不幸的是,我看到的所有示例和文档仅解释了如何将 Xamarin Forms 解决方案升级到使用 MAUI 的 .net 6 解决方案(这是 Xamarin Forms 的演变。)

所以:

  1. 如何将我的解决方案更新为 .net 6“原生”iOS 解决方案?
  2. 由于 .net 6 还支持 Mac Catalyst,除了 iOS 之外,如何将我的解决方案配置为在 Mac Catalyst 上也 运行?

方法 #1:
iOS Application (Preview)

查看 VS projects 的可用类型,您可以这样做:VS 2022 预览/新项目/语言=c#,平台=ios。滚动到列表底部附近,select iOS Application (Preview)。然后在解决方案资源管理器中,rt-click 项目/属性。结果针对“.NET 6.0”和“iOS”——你想要的。

查看 .csproj,它具有预期的 <TargetFramework>net6.0-ios</TargetFramework>
您可以手动添加 ;net6.0-maccatalyst.

但是:

  • 没有为 multi-targetting 设置文件夹。
  • 这可能是因为还有其他缺失的代码行和与 multi-targetting 相关的 xml 设置。
  • [可选] 即使您没有为 UI 使用毛伊岛,使用 Maui.Essentials 可能会有用。我认为需要在应用程序启动过程中添加一些东西来初始化它。

目前我不推荐方法 #1 - 特别是因为您也希望将 Mac 作为目标;您必须知道自己在做什么,才能以简化开发过程的方式组织一切。

除非有人可以指出没有 Maui 的 运行 multi-platform net6 的详细说明。


方法 #2: Maui Application (Preview)。然后删除所有你不需要的东西,因为你没有使用 Maui UI.

就我个人而言,我现在会这样做,以便在 iOS 和 Mac 上获得代码 运行。一旦你看到它工作,你可以积极地删除东西。

  • 修改iOSMac文件夹中的启动代码。启动“本机”根 viewcontroller,而不是 maui 应用程序构建器。就像你今天在 Xamarin.iOS.

您可以推迟 删除 Maui UI 代码和引用,直到 Maui 最终版本发布。到时候multi-platform net6应该更容易搞定,不依赖Maui框架

底线:感觉 multi-platform net6 没有被强调(short-term),除了作为毛伊岛的一部分。尽管 net6 on iOS(和其他平台)在代码库中确实独立存在。所以“顺其自然”,直到一切都稳固。