为 NuGet 创建新的特定于平台的库项目

面向特定平台(例如 iOS 和 Android)的多平台库项目最适合与共享项目配合使用。

NuGet 可以同时包含特定于 iOS 和 Android 的代码,以及两者通用的 .NET 代码。

多个程序集将被创建并生成为单个 NuGet 包。 NuGet 标准确保该包可以添加到所有受支持的项目类型,例如 Xamarin.iOS 和 Android 项目。

创建跨平台库 NuGet 的步骤

  1. 选择“文件”>“新建解决方案”(或右键单击现有解决方案,然后选择“添加”>“新建项目)。

  2. 从“多平台”>“库”部分选择“多平台库”

    Configure multi-platform library for a single code base

  3. 输入名称和说明,然后选择“特定于平台”:

    Configure platform-specific library for iOS and Android

  4. 完成该向导。 以下项目将添加到解决方案:

    • Android 项目 – 可以有选择地将特定于 Android 的代码添加到此项目中。
    • iOS 项目 – 可以有选择地将特定于 iOS 的代码添加到此项目中。
    • NuGet 项目 – 不向此项目添加任何代码。 它引用其他项目,并包含 NuGet 包输出的元数据配置。
    • 共享项目 - 应将通用代码添加到此项目中,包括 #if 编译器指令中特定于平台的代码。
  5. 右键单击 NuGet 项目并选择“选项”,打开“NuGet 包”>“元数据”部分并输入所需的元数据(以及任何可选元数据):

    Enter required metadata

  6. 此外,在“项目选项”窗口中,打开“引用程序集”部分,然后选择共享库将通过“诱饵和开关”支持的 PCL 配置文件:

    Also in the Project Options window, open the Reference Assemblies section and choose which PCL profiles the shared library will support via bait and switch

    注意

    “诱饵和开关”表示 PCL 程序集将仅包含该库公开的 API(它不能包含特定于平台的代码)。 将 NuGet 添加到 Xamarin 项目时,将针对 PCL 编译共享库,但特定于平台的程序集包含 iOS 或 Android 项目实际使用的代码。

  7. 右键单击项目并选择“创建 NuGet 包”(或生成或部署解决方案),.nupkg NuGet 包文件将保存在 /bin/ 文件夹中(“调试”或“发布”,具体取决于配置)。

    NuGet package file will be saved in the bin folder either Debug or Release, depending on configuration

验证输出

NuGet 包也是 ZIP 文件,因此可以检查生成的包的内部结构。

此屏幕截图显示了支持 iOS 和 Android 的平台特定 NuGet 的内容,并且选择了两个引用程序集:

Files contained in the NuGet package