Aracılığıyla paylaş


Xamarin için El ile NuGet Paketleri Oluşturma

Bu sayfa, Xamarin platformunu hedefleyen NuGet paketleri oluşturmaya yardımcı olacak bazı ipuçları içerir.

Not

Xamarin Studio 6.2 (ve Mac için Visual Studio), PCL, .NET Standard veya Paylaşılan Projelerden otomatik olarak NuGet paketleri oluşturma özelliğini içerir. Daha fazla ayrıntı için Kod Paylaşımı için Çok Platformlu Kitaplıklar kılavuzuna bakın.

NuGet Paketi Xamarin Profilleri

NuGet web sitesinin Birden Çok .NET Framework Sürümünü ve Profilini Destekleme sayfasında farklı Microsoft çerçevelerinin ve profillerinin nasıl desteklenmesi anlatılmaktadır ancak Xamarin tarafından kullanılan hedef çerçeve adlarını içermez.

Günümüzde kullanılan ana Xamarin hedef çerçeveleri şunlardır:

  • MonoAndroid - Xamarin.Android
  • Xamarin.iOS - Xamarin.iOS Birleşik API (64 bit'i destekler)
  • Xamarin.Mac - Xamarin.Mac'in Xamarin.iOS ve Xamarin.Android API yüzeyine eşdeğer olan mobil profili.

Ayrıca eski iOS Klasik API'sine yönelik bir hedef de vardır:

  • MonoTouch - iOS Klasik API

Tüm bunları hedefleyen bir .nuspec dosyası şuna benzer olacaktır:

<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>

Yukarıdaki, tüm taşınabilir sınıf kitaplıklarını yoksayar.

Çoğu .nuspec dosyası hedef çerçevenin sürüm numarasını belirtir, ancak derlemeniz bu hedef çerçevenin tüm sürümleriyle çalışıyorsa isteğe bağlıdır. Yani hedefiniz lib\MonoAndroid ise bu, Xamarin.Android'in herhangi bir sürümüyle çalıştığı anlamına gelir.

Ondalık noktası olmayan bir sayı kümesine sahip sürümü belirtebilir veya ondalık noktaları kullanarak belirtebilirsiniz. Ondalık noktası olmadan NuGet her sayıyı alır ve her basamak arasına bir '.' ekleyerek bu sayıyı bir sürüme dönüştürür.

Yukarıdaki "MonoAndroid10" içinde "Android 1.0" anlamına gelir. Bu yalnızca projenin hedef çerçevesinin MonoAndroid sürüm 1.0 veya üzeri olması gerektiği anlamına gelir. Sürüm, proje dosyasındaki <TargetFrameworkVersion> öğesinde belirtilir.

Açıklığa kavuşturmak için:

  • MonoAndroid403 , Android 4.0.3 ve daha yeni sürümler ile eşleşir (yani API düzeyi 15)
  • Xamarin.iOS10 , Xamarin.iOS 1.0 ve daha yeni sürümler ile eşleşir
  • Xamarin.iOS1.0 , Xamarin.iOS 1.0 ve daha yeni sürümler ile de eşleşir

Platform Bağımlılıkları ile PCL NuGets

PCL Profilleri, erişebilecekleri .NET framework API'lerinde sınırlıdır ve platforma özgü kodlara kesinlikle erişemezler. Bu üçüncü taraf bağlantıları, Xamarin ve diğer platformlar için uyumluluk sağlamak üzere PCL ve yerel API'leri kullanan NuGet paketleri oluşturmaya yönelik farklı yaklaşımları ele alınıyor:

NuGet hedef adıyla PCL Profillerinin bu dış listesi de yararlı bir başvurudur.

Örnekler

Başvurabileceğiniz bazı açık kaynak örnekleri:

  • ModernHttpClient : Uygulamanızı System.Net.Http kullanarak yazın, ancak bu kitaplığı içinde bırakın; önemli ölçüde daha hızlı (kaynağı görüntüle).
  • Splat : Olması gereken öğeleri platformlar arası hale getirmek için bir kitaplık (kaynağı görüntüle).
  • NGraphics - .NET üzerinde vektör grafiklerini işlemek için platformlar arası bir kitaplık (kaynağı görüntüle).