Compartir vía


Creación manual de paquetes NuGet para Xamarin

Esta página contiene algunas sugerencias para ayudar a compilar paquetes NuGet que tienen como destino la plataforma de Xamarin.

Nota:

Xamarin Studio 6.2 (y Visual Studio para Mac) incluye la capacidad de generar automáticamente paquetes NuGet desde PCL, .NET Standard o proyectos compartidos. Consulte la guía Bibliotecas multiplataforma para uso compartido de código para obtener más detalles.

Perfiles de Xamarin del paquete NuGet

El sitio web de NuGet admite varias versiones y perfiles de .NET Framework describe cómo admitir diferentes marcos y perfiles de Microsoft, pero no incluye los nombres de plataforma de destino usados por Xamarin.

Las principales plataformas de destino de Xamarin que se usan actualmente son:

  • MonoAndroid : Xamarin.Android
  • Xamarin.iOS: API unificada de Xamarin.iOS (admite 64 bits)
  • Xamarin.Mac : perfil móvil de Xamarin.Mac, que es equivalente a la superficie de api de Xamarin.iOS y Xamarin.Android.

También hay un destino para la API clásica de iOS anterior:

  • MonoTouch : API clásica de iOS

Un archivo .nuspec dirigido a todos estos tendría un aspecto similar al siguiente:

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

El anterior omite las bibliotecas de clases portables.

La mayoría de los archivos .nuspec especifican el número de versión del marco de destino, pero es opcional si el ensamblado funciona con todas las versiones de ese marco de destino. Por lo tanto, si el destino fuera lib\MonoAndroid , esto significaría que funciona con cualquier versión de Xamarin.Android.

Puede especificar la versión con un conjunto de números sin un separador decimal o puede especificarla mediante puntos decimales. Sin el separador decimal NuGet solo tomará cada número y lo convertirá en una versión insertando un '.' entre cada dígito.

En el anterior "MonoAndroid10" significa "Android 1.0". Esto solo significa que la plataforma de destino del proyecto debe ser MonoAndroid versión 1.0 o posterior. La versión se especifica en el <TargetFrameworkVersion> elemento del archivo del proyecto.

Para aclarar:

  • MonoAndroid403 coincide con Android 4.0.3 y versiones posteriores (nivel de API 15)
  • Xamarin.iOS10 coincide con Xamarin.iOS 1.0 y versiones posteriores
  • Xamarin.iOS1.0 también coincide con Xamarin.iOS 1.0 y versiones posteriores

NuGets de PCL con dependencias de plataforma

Los perfiles de PCL están limitados en qué API de .NET Framework pueden acceder y, sin duda, no pueden acceder al código específico de la plataforma. Estos vínculos de terceros describen diferentes enfoques para crear paquetes NuGet que usan PCL y API nativas para proporcionar compatibilidad con Xamarin y otras plataformas:

Esta lista externa de perfiles de PCL con su nombre de destino nuGet también es una referencia útil.

Ejemplos

Algunos ejemplos de código abierto que puede hacer referencia a:

  • ModernHttpClient : escriba la aplicación con System.Net.Http, pero quite esta biblioteca en y pasará drásticamente más rápido (ver origen).
  • Splat : una biblioteca para crear cosas multiplataforma que deben ser (ver origen).
  • NGraphics: una biblioteca multiplataforma para representar gráficos vectoriales en .NET (origen de vista).