Xamarin.Mac 的目标框架

本文介绍可用于 Xamarin.Mac 的目标框架 (基类库) ,以及将它们用于 Xamarin.Mac 项目的含义。

Xamarin.Mac 的目标框架选项

背景

每个 .NET 程序或库都依赖于基类库 (BCL) 提供的功能。 此 BCL 包括 mscorlib、System、System.Net.Http 和 System.Xml 等程序集,这些程序集提供内置于所有 .NET 语言中的常见功能。

多年来,我们开发了多个不同版本的此 BCL,针对不同的用例进行优化。 “桌面”BCL 包括一组更丰富的库,这些库对于其他用例来说可能太重了,而移动版则侧重于确保 API 可以安全地进行链接,从而删除未使用的代码以减少应用程序占用空间。

这些不同目标框架的一个更重要的方面是,给定程序中的所有程序集 都必须 面向兼容的 BCL 程序集。 如果不是这样,则可以将两个程序集链接到不同版本的 System.dll 对给定类型的签名意见不一。 共享库可以面向 .NET Standard 2(目标框架的通用子集)或特定目标框架。

Xamarin.Mac 有三个目标框架选项可用,每个选项都有不同的优势和权衡:

  • (在旧文档中称为“移动”) - 与支持 Xamarin.iOS 的子集非常相似,针对性能和大小进行了高度优化。 此目标框架是链接器安全的,因此这些项目可以通过删除未使用的代码来大幅减少其最终占用空间。

  • 旧文档中名为 XM 4.5 的完整 () – 与“桌面”BCL 非常类似的子集,只需进行一些小的删除。 由于目标框架几乎与 net45 (及更高版本) 完全相同,因此它可以轻松使用许多不提供 netstandard2 或特定 Xamarin.Mac 内部版本的 nuget。 但是,由于 System.Configuration 的使用,它与链接不兼容。

  • 不支持 的 (在旧文档中称为“系统”) – 使用当前系统安装的 mono,而不是链接到 Xamarin.Mac 提供的 BCL。 这提供了最完整的程序集集,包括一些已知 (System.Drawing 有问题的程序集,例如) 。 此选项存在只有“最后手段”,强烈建议在使用之前用尽其他选项。 顾名思义,官方支持渠道不支持使用。

设置目标框架

若要更改为 Xamarin.Mac 项目的目标框架类型,请执行以下操作:

  1. 在 Visual Studio for Mac 中打开 Xamarin.Mac 项目。

  2. 在“解决方案资源管理器”中,双击项目文件打开“项目选项”对话框。

  3. 从“ 常规 ”选项卡中,选择符合应用程序需求 的目标框架 类型:

    使用“项目选项”窗口选择目标框架

  4. 单击“确定”按钮保存更改。

切换目标框架类型后,应 清理重新生成 Xamarin.Mac 项目。

总结

本文简要介绍了适用于 Xamarin.Mac 应用程序的不同类型的目标框架 (基类库) ,以及何时应使用每种类型的框架。