共用方式為


手動建立 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 檔案會指定目標 Framework 的版本號碼,但如果元件與該目標 Framework 的所有版本搭配使用,則為選擇性。 因此,如果您的目標是 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 上轉譯向量圖形的跨平台連結庫(檢視 來源)。