面向特定平台(例如 iOS 和 Android)的多平台库项目最适合与共享项目配合使用。
NuGet 可以同时包含特定于 iOS 和 Android 的代码,以及两者通用的 .NET 代码。
多个程序集将被创建并生成为单个 NuGet 包。 NuGet 标准确保该包可以添加到所有受支持的项目类型,例如 Xamarin.iOS 和 Android 项目。
创建跨平台库 NuGet 的步骤
选择“文件”>“新建解决方案”(或右键单击现有解决方案,然后选择“添加”>“新建项目)。
从“多平台”>“库”部分选择“多平台库”:
输入名称和说明,然后选择“特定于平台”:
完成该向导。 以下项目将添加到解决方案:
- Android 项目 – 可以有选择地将特定于 Android 的代码添加到此项目中。
- iOS 项目 – 可以有选择地将特定于 iOS 的代码添加到此项目中。
- NuGet 项目 – 不向此项目添加任何代码。 它引用其他项目,并包含 NuGet 包输出的元数据配置。
- 共享项目 - 应将通用代码添加到此项目中,包括
#if
编译器指令中特定于平台的代码。
右键单击 NuGet 项目并选择“选项”,打开“NuGet 包”>“元数据”部分并输入所需的元数据(以及任何可选元数据):
此外,在“项目选项”窗口中,打开“引用程序集”部分,然后选择共享库将通过“诱饵和开关”支持的 PCL 配置文件:
注意
“诱饵和开关”表示 PCL 程序集将仅包含该库公开的 API(它不能包含特定于平台的代码)。 将 NuGet 添加到 Xamarin 项目时,将针对 PCL 编译共享库,但特定于平台的程序集包含 iOS 或 Android 项目实际使用的代码。
右键单击项目并选择“创建 NuGet 包”(或生成或部署解决方案),.nupkg NuGet 包文件将保存在 /bin/ 文件夹中(“调试”或“发布”,具体取决于配置)。
验证输出
NuGet 包也是 ZIP 文件,因此可以检查生成的包的内部结构。
此屏幕截图显示了支持 iOS 和 Android 的平台特定 NuGet 的内容,并且选择了两个引用程序集: