Uso compartido de código de proyectos compartidos

Los proyectos compartidos permiten escribir código común al que hace referencia varios proyectos de aplicación diferentes. El código se compila como parte de cada proyecto de referencia y puede incluir directivas de compilador para ayudar a incorporar una funcionalidad específica de la plataforma en el código base compartido.

Los proyectos compartidos (también denominados proyectos de recursos compartidos) permiten escribir código que se comparte entre varios proyectos de destino, incluidas las aplicaciones de Xamarin.

Admiten directivas del compilador para que pueda incluir condicionalmente código específico de la plataforma para compilarse en un subconjunto de los proyectos que hacen referencia al proyecto compartido. También hay compatibilidad con IDE para ayudar a administrar las directivas del compilador y visualizar el aspecto del código en cada aplicación.

Si ha usado la vinculación de archivos en el pasado para compartir código entre proyectos, los proyectos compartidos funcionan de forma similar, pero con una compatibilidad con IDE mejorada.

¿Qué es un proyecto compartido?

A diferencia de la mayoría de los otros tipos de proyecto que un proyecto compartido no tiene ninguna salida (en formato DLL), en su lugar, el código se compila en cada proyecto que hace referencia a él. Esto se muestra en el diagrama siguiente: conceptualmente, todo el contenido del proyecto compartido se "copia en" cada proyecto de referencia y se compila como si fuera parte de ellos.

Arquitectura de proyecto compartido

El código de un proyecto compartido puede contener directivas de compilador que habilitarán o deshabilitarán secciones de código en función del proyecto de aplicación que use el código, lo que sugieren los cuadros de plataforma coloreados en el diagrama.

Un proyecto compartido no se compila por sí solo, existe únicamente como una agrupación de archivos de código fuente que se pueden incluir en otros proyectos. Cuando se hace referencia a otro proyecto, el código se compila eficazmente como parte de ese proyecto. Los proyectos compartidos no pueden hacer referencia a ningún otro tipo de proyecto (incluidos otros proyectos compartidos).

Tenga en cuenta que los proyectos de aplicación de Android no pueden hacer referencia a otros proyectos de aplicaciones Android; por ejemplo, un proyecto de prueba unitaria de Android no puede hacer referencia a un proyecto de aplicación de Android. Para obtener más información sobre el proyecto compartido.

Tutorial de Visual Studio para Mac

En esta sección se explica cómo crear y usar un proyecto compartido mediante Visual Studio para Mac. Consulte la sección Ejemplo de proyecto compartido para obtener un ejemplo completo.

Creación de un proyecto compartido

Para crear un nuevo proyecto compartido, vaya a Archivo > nueva solución... (o haga clic con el botón derecho en una solución existente y elija Agregar > nuevo proyecto...):

soluciónNueva

En la pantalla siguiente, elija el nombre del proyecto y haga clic en Crear.

A continuación se muestra un nuevo proyecto compartido: observe que no hay referencias ni nodos componentes; no se admiten para proyectos compartidos.

Proyecto compartido

Para que un proyecto compartido sea útil, debe hacer referencia a él al menos un proyecto capaz de compilar (como una aplicación o biblioteca de iOS o Android, o un proyecto PCL). Un proyecto compartido no se compila cuando no tiene nada que hacer referencia a él, por lo que los errores de sintaxis (o cualquier otro) no se resaltarán hasta que algo más haga referencia a él.

Agregar una referencia a un proyecto compartido se realiza de la misma manera que hacer referencia a un proyecto de biblioteca normal. En esta captura de pantalla se muestra un proyecto de Xamarin.iOS que hace referencia a un proyecto compartido.

Referencia del proyecto a proyecto compartido

Una vez que otra biblioteca o aplicación hace referencia al proyecto compartido, puede compilar la solución y ver los errores en el código. Cuando dos o más proyectos hacen referencia al proyecto compartido, aparece un menú en la parte superior izquierda del editor de código fuente que muestra qué proyectos hacen referencia a este archivo.

Opciones de proyecto compartido

Al hacer clic con el botón derecho en un proyecto compartido y elegir Opciones , hay menos configuraciones que otros tipos de proyecto. Dado que los proyectos compartidos no se compilan (por sí solos), no se pueden establecer opciones de salida o compilador, configuraciones de proyecto, firma de ensamblado o comandos personalizados. El código de un proyecto compartido hereda eficazmente estos valores de lo que hace referencia a ellos.

La pantalla Opciones se muestra a continuación: el nombre del proyecto y el espacio de nombres predeterminado son las únicas dos configuraciones que generalmente cambiará.

Opciones de proyecto compartido

Ejemplo de proyecto compartido

En el ejemplo de Tasky se usa un proyecto compartido para contener el código común que usan las aplicaciones iOS, Android y Windows Phone. Tanto los archivos de código fuente como TaskRepository.cs los SQLite.cs archivos de código fuente utilizan directivas del compilador (por ejemplo#if __ANDROID__, ) para generar una salida diferente para cada una de las aplicaciones que hacen referencia a ellos.

La estructura de solución completa se muestra a continuación (en Visual Studio para Mac y Visual Studio respectivamente):

El proyecto de Windows Phone se puede navegar desde dentro de Visual Studio para Mac, aunque ese tipo de proyecto no se admita para la compilación en Visual Studio para Mac.

A continuación se muestran las aplicaciones en ejecución:

Ejemplos de iOS, Android Windows Phone

Resumen

En este documento se describe cómo funcionan los proyectos compartidos, cómo se pueden crear y usar tanto en Visual Studio para Mac como en Visual Studio, y se introdujo una aplicación de ejemplo sencilla que muestra un proyecto compartido en acción.