[PowerShell] Interrumpir la ejecución cuando Import-Module no encuentra el módulo

Esto es un truco sencillo y muy básico de PowerShell, pero puede desconcertar bastante a quien está empezando o utiliza PowerShell de forma esporádica. En PowerShell existen los llamados “terminating errors” y los “non-terminating errors”. Como su nombre permite intuir, unos finalizan la ejecución del script en curso cuando se producen y los otros no, limitándose a informar del error. Hasta aquí he descrito el comportamiento por defecto. Que un error sea del tipo “terminating” o del tipo “non-terminating”, no es algo que nosotros podamos controlar, y eso puede dar algún que otro quebradero de cabeza en algunas ocasiones. »

Author image Modesto San Juan

Eliminar regiones (#region) de forma masiva desde Visual Studio

No voy a entrar en el debate de si el uso de #regions es una buena práctica o no, pero es algo que no utilizo y que suelo interpretar como un mal olor cuando me lo encuentro en el código. Me he animado a escribir este pequeño apune porque recientemente me he encontrado con la necesidad de eliminar de un proyecto casi 25.000 regiones (si, veinticinco mil) y quiero tener esto a mano para el futuro. »

Author image Modesto San Juan

¿Necesitas programar un servicio para Windows? Prueba Topshelf

Programar un servicio para Windows suele ser una tarea engorrosa y Topshelf proporciona una alternativa bastante interesante y muchísimo menos engorrosa que la plantilla por defecto que incorpora Visual Studio. Aunque podría enumerar bastantes aspectos interesantes de Topshelf, me quedo con uno que para mi es fundamental, permite que una aplicación de consola sea un servicio de Windows. Esto significa que es posible recurrir a la aplicación de consola durante la fase de desarrollo o para su ejecución de forma independiente, pero que además es posible instalar esa aplicación de consola como un servicio Windows simplemente pasando un parámetro en su ejecución. »

Author image Modesto San Juan

Utilizando Extensionless para monitorizar logs y excepciones

Cada vez que abordo un nuevo desarrollo, considero que la generación de trazas es una parte vital ya que es uno de los mecanismos que nos va a permitir diagnosticar e identificar cualquier tipo de problema cuando estemos en producción, en ocasiones incluso antes de que los propios usuarios lleguen a reportarlo. Hacer que nuestra aplicación genere las trazas adecuadas es una gran herramienta, no sólo para diagnosticar bugs, también permite identificar problemas relacionados con el rendimiento y otro tipo de funcionamientos anómalos de nuestras aplicaciones. »

Author image Modesto San Juan

Cómo crear Appx para Sideloading desde Integración Continua

Cuando trabajamos con aplicaciones para la tienda de Windows, hay escenarios en los que necesitamos hacer Sideloading. Básicamente el Sideloading nos permite instalar una aplicación de la tienda de Windows, sin utilizar la tienda de Windows. Las razones para querer hacer Sideloading pueden ser muchas: probar la aplicación en local antes de subirla a la tienda, instalar la aplicación en algunos dispositivos para hacer testing en friends&family o simplemente utilizar la aplicación a nivel corporativo fuera de la tienda de Windows. »

Author image Modesto San Juan

[PowerShell] Evitar que wget (Invoke-WebRequest) tarde tanto

Mientras estaba preparando unos scripts para automatizar el proceso de sideloading de una aplicación Windows 8.1, me encontré con un problema bastante tonto. Estaba descargando por HTTP el paquete de la aplicación desde una red local pero el comando wget de PowerShell tardaba demasiado. Tenía claro que no era problema de la red porque el archivo bajaba a buena velocidad por otros medios, pero siempre que usaba wget el comando tardaba demasiado tiempo. »

Author image Modesto San Juan

Aclarando conceptos: proyectos PCL, universales y shared source

Lo habitual cuando quiero compartir código entre proyectos es recurrir a crear bibliotecas de clases. Dependiendo del tipo de proyectos en los que quiera reutilizar mi trabajo, es necesario recurrir a bibliotecas portables (PCL) o incluso a proyectos de código compartido (shared source). Con bibliotecas PCL había trabajado anteriormente, pero no con proyectos universales y shared source, y creo que es importante tener claro cuales son las diferencias entre cada tipo, ya que juegan papeles muy diferentes. »

Author image Modesto San Juan

[Solucionado] Fluent Migrator no encuentra migraciones

Hace unos meses empecé a trabajar en un proyecto en el que utilizamos Fluent Migrator. Todo funciona bien el proyecto tiene bastantes migraciones funcionando sin problema. En líneas generales funciona casi igual que las migraciones de EF, con algún detalle distinto. El caso es que hoy he empezado un proyecto nuevo y he añadido la referencia al paquete de Fluent Migrator para empezar a utilizarlo. Cuando he lanzado las migraciones parecía que todo estaba bien (no daba ningún error), pero no me encontraba ninguna de las migraciones que había definido en el ensamblado de migraciones. »

Datos de ejemplo en el ViewModel para facilitar la vista de diseño

Al trabajar con XAML, especialmente si la vista tiene un listado de items, puede resultar muy complicado ajustar la vista para que se vea correctamente. Tareas como ajustar los márgenes, la posición de los elementos o cualquier tipo de cambio en los estilos se pueden convertir en algo bastante pesado. Este es un ejemplo de una vista de que contiene un ListView sin datos de ejemplo en vista de diseño: »

Author image Modesto San Juan

Por el momento, este es el listado de posts que he publicado sobre este tema: Redescubriendo la orientación a objetos Encapsulación, visibilidad y retención de estado Mensajes, clases y herencia »

Author image Modesto San Juan