如何在 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 的演变。)
所以:
- 如何将我的解决方案更新为 .net 6“原生”iOS 解决方案?
- 由于 .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 上获得代码 运行。一旦你看到它工作,你可以积极地删除东西。
- 修改
iOS
和Mac
文件夹中的启动代码。启动“本机”根 viewcontroller,而不是 maui 应用程序构建器。就像你今天在 Xamarin.iOS
.
您可以推迟 删除 Maui UI 代码和引用,直到 Maui 最终版本发布。到时候multi-platform net6
应该更容易搞定,不依赖Maui框架
底线:感觉 multi-platform net6
没有被强调(short-term),除了作为毛伊岛的一部分。尽管 net6 on iOS
(和其他平台)在代码库中确实独立存在。所以“顺其自然”,直到一切都稳固。
我有一个 Xamarin.iOS 解决方案,其中包括一个库项目和一个可执行文件。该解决方案不使用 Xamarin Forms,即所谓的“Xamarin Native”解决方案。
我想将其升级为 .net 6 解决方案。不幸的是,我看到的所有示例和文档仅解释了如何将 Xamarin Forms 解决方案升级到使用 MAUI 的 .net 6 解决方案(这是 Xamarin Forms 的演变。)
所以:
- 如何将我的解决方案更新为 .net 6“原生”iOS 解决方案?
- 由于 .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 上获得代码 运行。一旦你看到它工作,你可以积极地删除东西。
- 修改
iOS
和Mac
文件夹中的启动代码。启动“本机”根 viewcontroller,而不是 maui 应用程序构建器。就像你今天在Xamarin.iOS
.
您可以推迟 删除 Maui UI 代码和引用,直到 Maui 最终版本发布。到时候multi-platform net6
应该更容易搞定,不依赖Maui框架
底线:感觉 multi-platform net6
没有被强调(short-term),除了作为毛伊岛的一部分。尽管 net6 on iOS
(和其他平台)在代码库中确实独立存在。所以“顺其自然”,直到一切都稳固。