我有一个Xamarin.iOS解决方案,其中包括一个库项目和一个可执行文件。该解决方案不使用Xamarin Forms,即所谓的“Xamarin Native”解决方案。
我想把这个升级到.net 6解决方案。不幸的是,我看到的所有示例和文档都只解释了如何将Xamarin Forms解决方案升级到使用MAUI(这是Xamarin Forms的演变)的.net 6解决方案。
于是:
1.如何将我的解决方案更新为.net 6“原生”iOS解决方案?
1.由于.net 6也支持Mac Catalyst,我如何将我的解决方案配置为除了在iOS上运行之外还在Mac Catalyst上运行?
2条答案
按热度按时间flvtvl501#
方法一:
第一个月
查看可用的
VS projects
类型,您可以执行以下操作:VS 2022预览版/新项目/ language=c#,platform=ios。滚动到列表底部附近,选择iOS Application (Preview)
。然后在解决方案资源管理器中,右键单击项目/属性。结果目标是“.NET 6.0”和“iOS”-您想要的。查看
.csproj
,它具有预期的<TargetFramework>net6.0-ios</TargetFramework>
。您可以手动添加
;net6.0-maccatalyst
。但是:
Maui.Essentials
也可能很有用。我认为需要在应用程序启动过程中添加一些东西来初始化它。我不推荐方法#1在这个时候-特别是因为你希望目标Mac也;你必须知道你在做什么,以便以一种简化你的开发过程的方式来组织一切。
除非有人能指出在没有Maui的情况下运行
multi-platform net6
的详细说明。方法#2:
Maui Application (Preview)
。然后删除所有你不需要的东西,因为你没有使用Maui UI。就我个人而言,我现在会这样做,让代码在iOS和Mac上运行。一旦你看到它的工作,你可以得到积极的删除的东西。
iOS
和Mac
文件夹中的启动代码。启动一个“本机”根viewcontroller,而不是maui app builder。就像你今天在Xamarin.iOS
中做的一样。您可以 * 推迟 * 删除Maui UI代码和引用,直到最终的Maui版本。到那时,
multi-platform net6
应该更容易获得,而不依赖于Maui框架。底线是:感觉像
multi-platform net6
没有被强调(短期),除了作为毛伊岛的一部分。即使net6 on iOS
(和其他平台)在代码库中也是独立的。所以“顺其自然”,直到一切都是坚实的。0x6upsns2#
我已经升级到.net7了:
1.将库(取决于iOS)csproj升级为新格式:
字符串
1.升级您的应用csproj:
型
2.2从csproj中删除所有.cs文件和所有xib、故事板文件。或者不添加它们,它们将自己添加。
2.3使用上下文菜单将所有xib、故事板文件构建操作更改为“界面定义”。
1.从info.plist中删除minoskey-value(因为它现在在csproj中)。
3.1将info.plist UIRequiredDeviceCapabilities从armv7更改为arm 64
3.2从maccatalystinfo.plist中删除LSRequiresIPhoneOS
1.创建文件夹Platforms/iOS和Platforms/MacCatalyst。将info.plist移动并复制到这些文件夹中。(否则您将无法使用通常的(应用程序)视图编辑信息列表)。
1.尽管它说我们使用Maui,但实际上我们并没有使用Maui,但它允许我们使用,编译多目标应用程序。如果您将其删除,您将无法选择要部署的Catalyst目标。您可以使用另一种方法,即复制应用程序csproj,并在第二个csproj中仅为Catalyst保留目标,这也将有效。
1.将特定于平台的代码放在上面的文件夹中,它们可能具有相同的类名和签名,并且将仅针对特定的平台进行编译。