Compartir a través de


Parte 3: Configuración de una solución multiplataforma Xamarin

Independientemente de las plataformas que se usen, todos los proyectos de Xamarin utilizan el mismo formato de archivo de solución (el formato de archivo .sln de Visual Studio). Las soluciones se pueden compartir entre entornos de desarrollo, incluso cuando no se pueden cargar proyectos individuales (como un proyecto de Windows en Visual Studio para Mac).

Al crear una aplicación multiplataforma, el primer paso consiste en crear una solución en blanco. En esta sección se explica lo que sucede a continuación: configurar los proyectos para compilar aplicaciones móviles multiplataforma.

Uso compartido de código

Consulte el documento Opciones de uso compartido de código para obtener una descripción detallada de cómo implementar el uso compartido de código entre plataformas.

.NET Standard

Los proyectos de .NET Standard proporcionan una manera sencilla de compartir código entre plataformas, y generar ensamblados que se pueden usar en Windows, plataformas de Xamarin (iOS, Android, Mac) y Linux. Esta es la manera recomendada de compartir código para soluciones de Xamarin.

Otras opciones

Históricamente, Xamarin usaba bibliotecas de clases portables (PCL)] y proyectos compartidos. No se recomienda ninguna de estas opciones para los nuevos proyectos, y debe considerar la posibilidad de migrar las aplicaciones existentes para usar .NET Standard.

Relleno de la solución

Independientemente del método que se use para compartir código, la estructura general de la solución debe implementar una arquitectura en capas que fomente el uso compartido del código. El enfoque de Xamarin consiste en agrupar código en dos tipos de proyecto:

  • Proyecto Principal (o "Compartido"): escriba código reutilizable en un solo lugar para compartirlo entre distintas plataformas. Use los principios de encapsulación para ocultar los detalles de implementación siempre que sea posible.
  • Proyectos de aplicación específicos de la plataforma: consuma el código reutilizable con el menor acoplamiento posible. Las características específicas de la plataforma se agregan en este nivel, basadas en componentes expuestos en el proyecto Principal.

Proyecto Principal

Los proyectos principales que comparten código deben ser de .NET Standard y solo hacer referencia a ensamblados que están disponibles en todas las plataformas: es decir, los espacios de nombres de marco comunes, como System, System.Core y System.Xml.

Los proyectos principales deben implementar tantas funcionalidades que no sean de interfaz de usuario como sea posible, lo que podría incluir las siguientes capas:

  • Capa de datos: código que se encarga del almacenamiento de datos físico, por ejemplo, SQLite-NET o incluso archivos XML. Normalmente, las clases de capa de datos solo se usan en la capa de acceso a datos.
  • Capa de acceso a datos: define una API que admite las operaciones de datos necesarias para la funcionalidad de la aplicación, como métodos para acceder a listas de datos, elementos de datos individuales y también crearlos, editarlos y eliminarlos.
  • Capa de acceso de servicio: una capa opcional para proporcionar servicios en la nube a la aplicación. Contiene código que accede a recursos de red remotos (servicios web, descargas de imágenes, etc.) y posiblemente el almacenamiento en caché de los resultados.
  • Capa de negocio: definición de las clases Model y las clases Façade o Manager que exponen la funcionalidad a las aplicaciones específicas de la plataforma.

Proyectos de aplicaciones específicos de la plataforma

Los proyectos específicos de la plataforma deben hacer referencia a los ensamblados necesarios para enlazar con el SDK de cada plataforma (Xamarin.iOS, Xamarin.Android, Xamarin.Mac o Windows), así como con el proyecto de .NET Standard.

Los proyectos específicos de la plataforma deben implementar lo siguiente:

  • Capa de aplicación: funcionalidad específica de la plataforma y enlace o conversión entre los objetos de la capa empresarial y la interfaz de usuario.
  • Capa de interfaz de usuario: pantallas, controles de interfaz de usuario personalizados, presentación de la lógica de validación.

Referencias de proyecto

Las referencias del proyecto reflejan las dependencias de un proyecto. Los proyectos principales limitan sus referencias a ensamblados comunes para que el código sea fácil de compartir. Los proyectos de aplicación específicos de la plataforma hacen referencia al proyecto de .NET Standard, además de cualquier otro ensamblado específico de la plataforma que necesiten para aprovechar las ventajas de la plataforma de destino.

En los casos prácticos se proporcionan ejemplos específicos de cómo se deben estructurar los proyectos.

Adición de archivos

Acción de compilación

Es importante establecer la acción de compilación correcta para determinados tipos de archivo. En esta lista se muestra la acción de compilación para algunos tipos de archivo comunes:

  • Todos los archivos de C#: acción de compilación: Compile
  • Imágenes en Xamarin.iOS y Windows: acción de compilación: Content
  • Archivos XIB y Storyboard en Xamarin.iOS: acción de compilación: InterfaceDefinition
  • Imágenes y diseños XML en Android: acción de compilación: AndroidResource
  • Archivos XAML en proyectos de Windows: acción de compilación: Page
  • Archivos XAML de Xamarin.Forms: acción de compilación: EmbeddedResource

Por lo general, el IDE detectará el tipo de archivo y sugerirá la acción de compilación correcta.

Distinción de mayúsculas y minúsculas

Por último, recuerde que algunas plataformas tienen sistemas de archivos que distinguen mayúsculas de minúsculas (por ejemplo, iOS y Android) así que asegúrese de usar un estándar de nomenclatura de archivos coherente y de que los nombres de archivo que utiliza en el código coincidan exactamente con el sistema de archivos. Esto es especialmente importante para las imágenes y otros recursos a los que se hace referencia en el código.