Condividi tramite


Creazione manuale di pacchetti NuGet per Xamarin

Questa pagina contiene alcuni suggerimenti per compilare pacchetti NuGet destinati alla piattaforma Xamarin.

Nota

Xamarin Studio 6.2 (e Visual Studio per Mac) include la possibilità di generare automaticamente pacchetti NuGet da progetti PCL, .NET Standard o Condivisi. Per altri dettagli, vedere la guida alle librerie multipiattaforma per la condivisione del codice.

Profili Xamarin del pacchetto NuGet

Il sito Web NuGet Che supporta più versioni e profili di .NET Framework illustra come supportare diversi framework e profili Microsoft, ma non include i nomi dei framework di destinazione usati da Xamarin.

I principali framework di destinazione Xamarin attualmente in uso sono:

  • MonoAndroid - Xamarin.Android
  • Xamarin.iOS - API unificata Xamarin.iOS (supporta 64 bit)
  • Xamarin.Mac : profilo mobile di Xamarin.Mac, equivalente all'api Xamarin.iOS e Xamarin.Android.

Esiste anche una destinazione per l'API classica iOS precedente:

  • MonoTouch - API classica iOS

Un file con estensione nuspec che ha come destinazione tutti questi elementi sarà simile al seguente:

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

In precedenza vengono ignorate tutte le librerie di classi portabili.

La maggior parte dei file con estensione nuspec specifica il numero di versione del framework di destinazione, ma è facoltativo se l'assembly funziona con tutte le versioni del framework di destinazione. Quindi, se la destinazione era lib\MonoAndroid , ciò significa che funziona con qualsiasi versione di Xamarin.Android.

È possibile specificare la versione con un set di numeri senza un separatore decimale oppure è possibile specificarla usando i separatori decimali. Senza il separatore decimale NuGet prenderà solo ogni numero e lo trasformerà in una versione inserendo un '.' tra ogni cifra.

Nell'esempio precedente "MonoAndroid10" significa "Android 1.0". Ciò significa che il framework di destinazione del progetto deve essere MonoAndroid versione 1.0 o successiva. La versione viene specificata nell'elemento <TargetFrameworkVersion> nel file di progetto.

Per chiarire:

  • MonoAndroid403 corrisponde ad Android 4.0.3 e versioni successive (ad esempio il livello API 15)
  • Xamarin.iOS10 corrisponde a Xamarin.iOS 1.0 e versioni successive
  • Xamarin.iOS1.0 corrisponde anche a Xamarin.iOS 1.0 e versioni successive

NuGet pcl con dipendenze della piattaforma

I profili PCL sono limitati nelle API di .NET Framework a cui possono accedere e non possono accedere al codice specifico della piattaforma. Questi collegamenti di terze parti illustrano diversi approcci per la creazione di pacchetti NuGet che usano LE API native e pcl per garantire la compatibilità per Xamarin e altre piattaforme:

Questo elenco esterno di profili PCL con il nome di destinazione NuGet è anche un riferimento utile.

Esempi

Alcuni esempi open source a cui è possibile fare riferimento:

  • ModernHttpClient : scrivere l'app usando System.Net.Http, ma eliminare questa libreria in e andare drasticamente più veloce (vista origine).
  • Splat: una libreria per creare elementi multipiattaforma che devono essere (visualizzare l'origine).
  • NGraphics: libreria multipiattaforma per il rendering della grafica vettoriale in .NET (origine di visualizzazione).