手动为 Xamarin 创建 NuGet 包
本页包含一些帮助生成面向 Xamarin 平台的 NuGet 包的提示。
注意
Xamarin Studio 6.2(和 Visual Studio for Mac)包括从 PCL、.NET Standard 或共享项目自动生成 NuGet 包的功能。 有关更多详细信息, 请参阅多平台代码共享 库指南。
NuGet 包 Xamarin 配置文件
NuGet 网站的 多个 .NET Framework 版本和配置文件讨论了如何支持不同的 Microsoft 框架和配置文件 ,但不包括 Xamarin 使用的目标框架名称。
目前使用的主要 Xamarin 目标框架包括:
- MonoAndroid - Xamarin.Android
- Xamarin.iOS - Xamarin.iOS 统一 API (支持 64 位)
- Xamarin.Mac - Xamarin.Mac 的移动配置文件,相当于 Xamarin.iOS 和 Xamarin.Android API 图面。
旧版 iOS 经典 API 还有一个目标:
- MonoTouch - iOS 经典 API
面向所有这些目标的 .nuspec 文件如下所示:
<files>
<file src="Mac\bin\Release\*.dll" target="lib\Xamarin.Mac20" />
<file src="iOS\bin\Release\*.dll" target="lib\Xamarin.iOS10" />
<file src="Android\bin\Release\*.dll" target="lib\MonoAndroid10" />
<file src="iOSClassic\bin\Release\*.dll" target="lib\MonoTouch10" />
</files>
上述代码将忽略任何可移植类库。
大多数 .nuspec 文件指定目标框架的版本号,但如果程序集与该目标框架的所有版本一起使用,则这是可选的。 因此,如果目标为 lib\MonoAndroid ,这意味着它适用于任何版本的 Xamarin.Android。
可以使用一组没有小数点的数字来指定版本,也可以使用小数点指定它。 如果没有小数点 NuGet,只需获取每个数字,并通过在每个数字之间插入“.”将其转换为版本。
在上面的“MonoAndroid10”中表示“Android 1.0”。 这仅意味着项目 的目标框架 必须是 MonoAndroid 1.0 或更高版本。 版本在项目文件中的元素中 <TargetFrameworkVersion>
指定。
具体公式:
- MonoAndroid403 匹配 Android 4.0.3 及更新版本(即 API 级别 15)
- Xamarin.iOS10 匹配 Xamarin.iOS 1.0 及更新
- Xamarin.iOS1.0 还匹配 Xamarin.iOS 1.0 及更新
具有平台依赖项的 PCL NuGet
PCL 配置文件在可以访问的 .NET Framework API 中受到限制,它们当然无法访问特定于平台的代码。 这些第三方链接讨论了创建使用 PCL 和本机 API 为 Xamarin 和其他平台提供兼容性的 NuGet 包的不同方法:
具有其 NuGet 目标名称的 PCL 配置文件的外部列表也是一个有用的参考。
示例
可以参考的一些开源示例:
- ModernHttpClient – 使用 System.Net.Http 编写应用,但将此库拖放到其中,它将大大加快(视图 源)。
- Splat – 一个库,用于使跨平台(视图 源)的东西。
- NGraphics - 用于在 .NET 上呈现矢量图形的跨平台库(视图 源)。