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

bri*_*ght 10 .net xamarin xamarin.forms .net-6.0 .net-maui

我有一个 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 上运行?

Too*_*eve 4

方法#1:
iOS Application (Preview)

查看 的可用类型VS projects,您可以执行以下操作:VS 2022 Preview / New Project / language=c#, platform=ios。滚动到列表底部附近,选择iOS Application (Preview)。然后在解决方案资源管理器中,右键单击项目/属性。结果针对您想要的“.NET 6.0”和“iOS”。

一看.csproj,就已经是意料之中了<TargetFramework>net6.0-ios</TargetFramework>
您可以手动添加;net6.0-maccatalyst.

但:

  • 这些文件夹未设置为多目标。
  • 这可能是由于缺少与多目标相关的其他代码行和 xml 设置的症状。
  • [可选] 即使您没有使用 Maui 作为 UI,使用Maui.Essentials. 我认为需要在应用程序启动过程中添加一些内容来初始化它。

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

除非有人能指出multi-platform net6在没有毛伊岛的情况下跑步的详细说明。


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

就我个人而言,我现在会这样做,让代码在 iOS 和 Mac 上运行。一旦你看到它起作用了,你就会积极地删除东西。

  • iOS修改和文件夹中的启动代码Mac。启动“本机”根视图控制器,而不是 maui 应用程序构建器。就像你今天在 中所做的那样Xamarin.iOS

您可以推迟删除 Maui UI 代码和引用,直到最终确定 Maui 版本。到时候multi-platform net6应该比较容易上手,不需要依赖Maui框架。

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