Shared Project: un tipo de proyecto para compartir código y recursos

Con la aparición de Visual Studio 2015 Preview hace ya un tiempo que tenemos disponible un nuevo tipo de proyecto, el cual puede sernos muy útil: Shared Project.

Como su nombre nos insinúa, los Shared Projects tienen como objetivo el compartir contenido entre otros proyectos y aplicaciones. Si nos ponemos a pensar, esto es algo que normalmente podríamos hacer con una biblioteca de clases, la cual tiene la lógica que querramos tanto encapsular como compartir entre otros proyectos. Y esta biblioteca de clases generará su propio Assembly.

Sin embargo el enfoque de un Shared Project es totalmente distinto. En el mismo solamente tendremos aquellos recursos que querramos compartir entre otros proyectos, más bien como un repositorio de contenidos. Luego dichos recursos estarán compilados o asociados directamente a aquellos proyectos donde haya referencias al Shared Project en cuestión. Esto es algo totalmente distinto a lo que normalmente hacemos, en el que nuestro código es compilado en el proyecto donde pertenece, lo cual es particularmente útil (y en varios casos necesario) cuando tenemos en una misma solución proyectos de aplicaciones para diferentes plataformas. Además vale la aclaración de que no necesariamente debe haber código C#, también podemos tener archivos JavaScript, Xaml e imágenes, entre otros.

En este post vamos a trabajar con una aplicación Android en Xamarin y una de consola (esto solo a fin de tener dos aplicaciones target diferentes). A su vez vamos a tener un requerimiento particular: tener clases parciales en nuestro proyecto compartido, las cuales luego las aplicaciones target deberán completar. Si usaríamos una librería de clases esto no sería posible, ya que los distintos componentes de una clase parcial deben contenerse y compilarse en un mismo Assembly.

Lo primero que haremos en este ejemplo es tener creada nuestra solución con sus aplicaciones Android y de consola.

SharedProject - ProyectosIniciales

Luego de ello iremos a la solución, haremos click derecho y seleccionamos la opción para crear un nuevo proyecto. Es allí que dentro de las opciones nos aparecerá Shared Project. La seleccionamos y le damos el nombre deseado:

SharedProject - CrearProyecto

Una vez creado el mismo lo veremos en nuestra solución de la siguiente forma:

SharedProject - ProyectoAgregado

Lo primero que notaremos cuando se agrega este proyecto es que tiene un icono distinto a los que habitualmente acostumbramos a ver en Visual Studio. Y lo segundo es que el proyecto no tiene ni referencias ni propiedades, lo cual es acorde a que el mismo no se compilará de forma directa, sino que esto sucederá en cada uno de los proyectos donde lo referenciemos.

Lo siguiente a hacer será agregarle una clase, lo cual haremos como cualquier otro proyecto. Para los fines de esta prueba, crearemos una sencilla clase User, la cual tendrá la propiedad Name, además de estar definida como parcial.

Lo siguiente será agregar la referencia en el proyecto sobre el cual queremos usar el contenido del Shared Project, en este caso la aplicación de consola. Al seleccionar la opción de agregar referencia sobre uno de los proyectos veremos que tenemos una opción en el menú de la izquierda, el cual al seleccionarlo nos permitirá seleccionar todos los proyectos de este tipo que tenemos en nuestra solución:

SharedProject - AgregarReferencia

Como vemos también en la referencia se nos indica que es de otro tipo de proyecto:

SharedProject - ReferenciaProyecto

Ahora le daremos uso en nuestra aplicación de consola, creando una clase parcial que le agregue una propiedad adicional:

Nota: Recordar que las clases parciales deben tener le mismo espacio de nombres, por lo tanto la clase ubicada en la aplicación de consola contendrá el namespace del Shared Project.

Si vamos a la clase Program de la aplicación de consola y hacemos uso de la clase User efectivamente vemos que están las dos propiedades disponibles:

SharedProject - UsoAppConsola

Si repetimos el mismo procedimiento en la aplicación Android pero sin agregar la clase parcial en la misma, veremos que también contamos con la disponibilidad de la clase del Shared Project y la propiedad definida en ella:

SharedProject - UsoAppAndroid

Finalmente para validar que realmente es un contenido que se compila en cada proyecto donde se lo referencia, probemos de agregar un error en la clase ubicada en nuestro Shared Project. Si lo hacemos y compilamos veremos que el error asociado aparecerá asociado a los proyectos donde se los referencia.

SharedProject - ErroresCompiladosEnProyectos

En este caso lo hemos hecho para un ejemplo sencillo (pero útil) solamente con clases C#, pero lo podríamos estar haciendo con otros recursos compartidos entre aplicaciones.

Este tipo de proyectos se convierten en una alternativa muy interesante cuando realizamos desarrollo de aplicaciones en Xamarin, ya que nos permite compartir determinados contenidos entre todas las plataformas. Además de este esquema de clases parciales entre distintos proyectos, algo que personalmente me ha sido muy útil ante una problemática de compartir parte de código entre distintos proyectos, lo cual no podemos resolver de la forma tradicional con una biblioteca de clases.

Espero que les sirva, gracias por leer!

Anuncios

Un comentario en “Shared Project: un tipo de proyecto para compartir código y recursos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s