Creando un servidor NuGet propio para distribuir nuestras librerías

Algo que nos puede pasar de forma habitual cuando llevamos un tiempo desarrollando aplicaciones es que tenemos nuestras propias librerías para solucionar problemáticas comunes que se repiten de forma periódica. Básicamente lo que tendremos como resultados son DLLs que estaremos exportando de las librerías y referenciándolas desde los proyectos que las necesiten.

Por supuesto que esto es muchísimo mejor que tener la lógica común duplicada en todas las aplicaciones, pero también tiene sus desventajas, las cuales estarán en mayor o menor medida dependiendo de las características de las librerías y la cantidad de aplicaciones que la usen.

La principal es la distribución manual que debemos hacer de ese archivo para todas las aplicaciones clientes que deban usarlo. Normalmente lo que hacemos es copiarla desde otro proyecto que ya la esté usando. Además hay más problemas, ya que al hacer esto vamos a estar subiendo al repositorio de control de código fuente este archivo binario lo cual no deberíamos hacer. Más problemas tendremos cuando nuestra librería evolucione y tenga distintas versiones: ¿cómo sabemos cuál es la que tiene cada aplicación, la que necesitamos nosotros, si hay una nueva versión disponible, las dependencias que tiene cada una de esas versiones?

Está claro que la solución de todo esto es conocida desde hace tiempo, que es tener un paquete Nuget que encapsule todo esto. Pero necesitamos un servidor que nos provea los paquetes y en determinados casos (sobre todo en entornos empresariales) no podemos subir las librerías que se desarrollen en el repositorio público nuget.org

¿Entonces que hacemos? Sencillo, creemos nuestro servidor Nuget propio.

Básicamente es un sitio ASP.NET corriendo en algún entorno al que podamos acceder (puede estar expuesto a internet, en una intranet o hasta en nuestro equipo) con algunas particularidades. Veamos cómo crearlo:

Leer más »

Anuncios

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.

Leer más »

Visual Studio 2015 Preview: Breve repaso

Hace ya bastante salió a la luz la nueva versión de Visual Studio en forma de Preview: Visual Studio 2015 Preview. Si bien es una versión preliminar (no recomendada para entornos productivos), nos permite conocer hacia donde se va a enfocar esta nueva versión del IDE.

Lo primero, podemos descargarlo de forma gratuita en el siguiente link: http://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx. En el mismo podremos loguearnos y proceder a la descarga del mismo.

Si bien la cantidad de mejoras y nuevas funcionalidades es muy variada y extensa, la primera que nos llamó la atención con @sebis cuando veíamos la presentación en vivo que se había realizado en el Connect(); es la integración de muchas de las funcionalidades que hasta el momento provee ReShaper. Para el que no lo conoce, ReSharper es un complemento de pago para Visual Studio, cuyo objetivo es permitirnos realizar código más eficiente y de mayor calidad con diferentes ayudas, sugerencias y opciones de refactoring que comprenden diferentes aspectos de toda la solución. En esta nueva funcionalidad de Visual Studio nos aparecerá un foquito en el sector izquierdo sobre la línea en cuestión sobre la cual surja la ayuda o sugerencia (lo cual coincide con lo usado hasta ahora por ReSharper).

Podemos mencionar como ejemplo las siguientes (solo por mencionar algunas):

  • Sugerencias de quitar y ordenar referencias: a diferencia de las otras versiones, podemos indicar si se desea aplicar el cambio en el archivo, proyecto actual o en toda la solución. Sin dudas esto puede llegar a resultar muy potente.

VS2015 - QuitarReferencias

 

Leer más »

Como usar repositorios Git en Visual Studio 2013?

A raíz de una charla que tuve con un compañero de trabajo hace unos días, me pareció interesante hacer este post para comentar como utilizar repositorios Git en Visual Studio 2013.

Lo primero a destacar es que no necesitaremos ningún componente adicional para utilizar repositorios Git, ya que en la versión mencionada anteriormente está incluido de forma nativa.

Si no están muy al tanto del funcionamiento básico de Git, les recomiendo la lectura del Tutorial de Git de Atlassian, el cual explica de forma clara los conceptos. Esto por nombrar solo un tutorial, en la web podrán encontrar muchísimos más, cada uno con distintos enfoques.

Vayamos paso por paso. Lo primero que vamos a hacer es crear nuestro repositorio Git, para lo cual en este ejemplo usaremos Bitbucket. Si no tienen una cuenta, la pueden crear de forma totalmente gratuita aquí.

Leer más »

Habilitar restauración de paquetes NuGet

Generalmente cuando empezamos a trabajar con repositorios de código fuente, compartiendo las tareas con otras personas, nos encontramos con ciertos aspectos que debemos manejar de forma correcta. Uno de ellos es la configuración de paquetes NuGet.

Cuando creamos un proyecto, por defecto tendremos creada dentro de la carpeta de la solución una carpeta denominada packages. La misma contiene el contenido de todos los paquetes que se instalan por defecto, como EntityFramework o jQuery.

NugetRestore - Paquetes iniciales
Paquetes al crear un nuevo proyecto MVC

Leer más »

[Off-topic] Python Tools para Visual Studio

Si bien este es un blog orientado a C# y tecnologías .Net, este post no deja de ser un aporte que puede resultar útil. Por motivos académicos tuve que trabajar con Python, lenguaje que había utilizado muy poco en algunos trabajos prácticos de la universidad. Y cuando nos vamos de .Net, una de las cosas que más extrañamos es Visual Studio, un entorno de desarrollo muy completo y cómodo (y que por suerte sigue evolucionando con nuevas versiones).
Y es aquí cuando un compañero me hizo recordar lo que habíamos leído hacía un tiempo, de que se podía usar Python con Visual Studio. Leyendo nos encontramos con Python Tools for Visual Studio, un componente para Visual Studio que nos permite integrarle dicho lenguaje.

La instalación es sencilla, solo debemos ir al link anterior y realizar la descarga según la versión de Visual Studio que tengamos (cuenta con soporte para Visual Studio 2010, 2012 y 2013). Una vez descargado y finalizada la instalación, abrimos Visual Studio y al crear un nuevo proyecto veremos las siguientes opciones:

Pytools - Proyectos disponibles
Tipos de proyectos disponibles en Python

Como se ve en la imagen anterior, podemos crear tanto aplicaciones sencillas de consola en Python como sitios web a través de la utilización del framework Django.
La interfaz es muy agradable, similar al original de Visual Studio. A continuación les dejo una captura de algunas clases de Python, en las cuales vemos que incluso se muestra el tipo de los datos, el cual es inferido a partir del uso previo:

Pytools - Interfaz de clases
Visualización del código fuente de clases

Leer más »