Uso compartido de código de proyectos compartidos

Los proyectos compartidos le permiten escribir código común al que distintos proyectos de aplicaciones hacen referencia. 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 que se va a compilar 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 cómo se verá el 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 muy mejorada.

¿Qué es un proyecto compartido?

A diferencia de la mayoría de los demás tipos de proyecto, 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 ilustra en el diagrama siguiente: conceptualmente, todo el contenido del proyecto compartido se "copia en" cada proyecto que hace referencia y se compila como si fuera parte de ellos.

Shared Project architecture

El código de un proyecto compartido puede contener directivas del 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 se sugiere en los cuadros de plataforma coloreados en el diagrama.

Un proyecto compartido no se compila por sí mismo, 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 de forma eficaz 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 aplicaciones 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 Android. Para más información, consulte 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 > Agregar nuevo proyecto...):

New Shared Project

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.

Empty Shared Project

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

La adición de una referencia a un proyecto compartido se realiza de la misma manera que cuando se hace 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.

Project reference to Shared Project

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 en otros tipos de proyecto. Dado que los proyectos compartidos no se compilan (por sí solos), no se pueden establecer opciones de salida o de compilador, configuraciones de proyecto, firma de ensamblados ni 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 los únicos dos valores que generalmente va a cambiar.

Shared Project Options

Ejemplo de proyecto compartido

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

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

Se puede acceder al proyecto Windows Phone desde 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:

iOS, Android, Windows Phone examples

Resumen

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