[VS2008] Como setear las variables de contexto necesarias para utilizar Visual Studio desde la linea de comandos

 

 

Buenas

revisando los threads en los foros en español de Team System (del cual tengo la suerte de ser moderador), una respuesta del gran Jose Luis Soria hizo que saque de los borradores un post relacionado con el archivo vsvars32.bat. Por lo general, cuando comienzas a crear soluciones para Visual Studio con archivos bat, llegas a un punto donde necesitas setear variables de contexto que ayuden a acceder a los elementos propios de .Net Framework, de Visual Studio y de otras herramientas.

Una de las soluciones más comunes, es agregar en el PATH local la información necesaria; pero también es posible realizar esta acción en el mismo bat para ahorrarnos el seteo en cada máquina. El archivo [C:Program Files (x86)Microsoft Visual Studio 9.0Common7Toolsvsvars32.bat] se encarga de setear estas variables de contexto y nos ahorra una tarde de investigación al respecto. El artículo oficial de MSDN se puede revisar desde http://msdn.microsoft.com/es-es/library/1700bbwd.aspx

Ahora con la llegada de PowerShell, la verdad es que la creación de un bar puede ser algo pesado y obsoleto; asi que si buscas una versión del vsvars32.bat pero para Powershell, puedes echarle un vistazo a http://www.agileprogrammer.com/dotnetguy/archive/2007/11/22/23853.aspx

 

Saludos @ Mom’s House

El Bruno

[AZURE] Project Riviera, ejemplo completo de la utilización de Azure

Buenas,

si quieres comenzar a probar alguna de las tecnologías para la nube que posee Microsoft y no sabes por donde comenzar, tal vez Project Riviera pueda ayudarte. Project Riviera es una aplicación completa para la gestión de clientes desarrollada por un partner de Microsoft  (Cumulux) y que demuestra la utilización de las tecnologías que engloba la plataforma Azure: .Net Services, SQL Azure, etc.

cumulux

 

Fuente: http://blogs.msdn.com/usisvde/archive/2009/08/29/azure-reference-architecture-explored-with-project-riviera.aspx

 

Saludos @ Mom’s house

El Bruno

Recursos: http://code.msdn.microsoft.com/riviera, http://www.microsoft.com/azure/resources.mspx

[VSS2010] Nuevos Web.Config a la minima expresión en ASP.Net 4.0

Buenas,

algunos de los que no somos fanáticos de las aplicaciones web siempre sufrimos con los web.config. Personalmente siempre me pareció que la cantidad de información útil de negocio que poseen los archivos de configuración web, es mínima en comparación con la configuración de entorno .net requerida. Hace un tiempo cuando surgió la oportunidad de sugerir mejoras, una de las que apoyé fue la de mejorar el tamaño e información en los archivos Web.Config.

Con la llegada del .Net Framework 4.0 una de los mejoras que se han incorporado es que el archivo machine.config ya registra automáticamente las extensiones AJAX, las secciones para ASP.Net Routing y otras mejoras más que se han incorporado en las ultimas versiones de ASP.Net pero que no eran parte del core del Framework.

De esta forma pasamos de tener un web.config de más de 100 líneas con Visual Studio 2008:

image

a uno más simple con las opciones mínimas de configuración:

 image

Saludos @ Cordoba.com.ar

El Bruno

[OFFTOPIC] Resolviendo Sudokus con el Lego Mindstorms

image

Buenas,

gracias a la gente de Alt1040 encontré este interesante bot creado con un LEGO Mindstorms NXT que resuelve Sudokus automáticamente utilizando el sensor de luminosidad como un scanner y los servomotores para controlar el movimiento.

 

Además de este ejemplo cursioso y que demuestra como aprovechar al máximo las capacidades del LEGO, en la página del crack de Hans Anderson también existe un paso a paso para armar el clásico y popular RESOLVEDOR DE CUBOS DE RUBIK; como siempre digo en las charlas de robótica, no se si la palabra resolvedor existe, pero RUBIK SOLVER queda un poco impersonal.

 

Saludos @ Marcos Juarez

El Bruno

Fuentes:  http://alt1040.com/2009/08/un-robot-capaz-de-resolver-sudokus, http://tiltedtwister.com

[VS2008] Dinner Now: Actualización con soporte a Windows 7 y Windows Server 2008 R2

Buenas,

hace casi un mes comenté que existía una versión de Dinner Now para descargar desde CodePlex. Este proyecto intenta armar un ejemplo práctico de una solución con una base sobre .Net Framework que integre las tecnologías más importantes de esta plataforma. El mismo cuando se descarga permite instalar la solución y acceder a todo el código fuente de la solución y sus partes: componentes de negocio, portales web, etc.

La nueva versión 3.1 incopora soporte a los flamantes lanzamientos en lo que a Sistemas Operativos se refiere: Windows 7 y Windows Server 2008 R2; además de dar soporte para PowerShell 2.0 y también soportar las versiones de 64 bits.

Yo jugué un poco con la versión 3.0, y espero robar tiempo en vacaciones (si la Gibson me deja) para probar esta versión.

 

Saludos @ La casa de mi padre

El Bruno

Fuente: http://blogs.msdn.com/habibh/archive/2009/08/17/dinnernow-net-3-1-for-windows-7-and-windows-server-2008-r2-released.aspx

[TFS2010] Team Project Collections: arquitectura revisada y aprobada en TFS 2010

Buenas,

hace un par de días comenté como podíamos hacer para conectarnos a un servidor TFS 2010 desde Visual Studio 2008. Uno de los temas que toqué es que ahora en TFS 2010 los Team Projects se almacenan en Team Project Collections. Los Team Project Collections (TPC), permiten independizar en un mismo servidor de TFS a varios Team Projects (TP).

En la versión de TFS 2008 un único servidor podía almacenar uno o más TP independientes entre sí. Pero en algunas ocasiones, los TPs podían compartir branches del Source Control, tener WorkItem Queries con consultas a varios TPs, los números de changeset eran compartidos por todo el server, etc. Esta arquitectura de TFS hacía que las acciones de migración de servers o consolidación de 2 servidores de TFS fueran tareas casi imposibles de realizar.

En TFS 2010, este problema se soluciona en gran parte con la introducción del concepto de Team Project Collections. Una TPC es una entidad única en donde pueden residir uno o más Team Projects. Lo interesante de este esquema es que desde la consola de administración de TFS podemos crear nuevos TPC y cada uno de ellos reside en una única base de datos, con lo que la migración o consolidación es una tarea muy simple.

Para aquellos que conocen Sharepoint el concepto es muy similar al de los Sharepoint Site Collections (creo que se llaman así, disculpad mi ignorancia si me equivoco)

En el siguiente tutorial veremos como crear un TPC y que impacto tiene el mismo.

Tutorial

1. Abrir la consola Team Foundation Administration Console.

image

2. En este caso existe una única TPC llamada ElBrunoCollection (gran demostración de los que los argentinos llamamos algo forma de ser, y el resto del mundo llama ego)

3. Hacemos click en el link Create Team Project Collection. y vemos como aparece el asistente para la creación de TPC.

image

4. Definimos la instancia de base de datos en la que se creará la TPC y además podemos elegir si queremos que se cree en una nueva base de datos o en una base de datos existente.

image

5. Definimos las opciones de creación para el site de Sharepoint. Por defecto se crea en el server que tiene configurado el TFS con el nombre del TPC.

image

6. Definimos las opciones de Reporting Services

image

7. Configuramos las opciones de integración con el entorno de Test. Lamentablemente mi entorno todavía no tiene Lab Management, espero poder configurarlo para la Beta 2.

image

8. Verificamos los parametros de configuración para la creación del TPC y procedemos a crear el mismo.

image

9. Comienza el proceso de creación del TPC, donde podemos ver como se crean los componentes base, el gestor de versiones, las opciones del Team Build, la gestion de WorkItems, etc. Si bien este proceso se lanza con varias opciones en paralelo, el mismo tarda bastante.

image

10. El TPC se crea correctamente y podemos ver el log de creación si queremos ver el detalle del mismo.

image

11. A partir de este momento ya podemos ver en la consola de administración de TFS 2010, un nuevo TPC. Desde esta misma consola podemos detener una TPC y administrar la misma: cambiar su descripción, gestionar la seguridad, etc.

image

12. Desde la misma consola podemos comprobar que no existen Team Projects creados en la nueva TPC.

image

13. Asimismo si conectamos al server de base de datos del TFS, podremos ver 2 distinas bases de datos para cada TPC: Tfs_ElBrunoCollection y Tfs_TPC01.

image

14. Finalmente si conectamos al servidor TFS 2010 desde Visual Studio 2010, podremos ver como aparecen 2 Team Project Collections dentro del mismo y para conectarnos a un Team Project en particular, debemos seleccionar primero una TPC.

image

 

Saludos @ Rio IV

El Bruno

[VSTS2010] Nuevas herramientas para la depuración de aplicaciones MultiThreading y otras yerbas

Buenas,

aquellos que alguna vez hayan tenido que desarrollar aplicaciones multithreading seguramente coincidirán que la tecnología es peligrosa muy potente, pero el IDE de Visual Studio 2008 era un poco pobre para la depuración de estas aplicaciones.

Disclaimer: no quiero animar a nadie a empezar a crear miles de threads a cascoporro con 2 líneas de código, siempre he opinado que la decisión de utiilzar threads para gestionar algo en una aplicación debe ser una de las últimas opciones. Este tipo de soluciones, sino están bien implementadas suelen traer más problemas que beneficios.

Desde hace un tiempo sigo en el blog de The Moth (Daniel Moth) una serie de artículos muy interesantes sobre este tema. Y una de las cosas que más me ha llamado la atención son 2 nuevos paneles en el IDE de Visual Studio que nos ayudan en la depuración en estos escenarios: Parallel Tasks y Parallel Stacks.

image

Partiendo de un ejemplo de Daniel y deteniendo una aplicación en tiempo de ejecución, podemos ver que ambos paneles muestran información más que interesante.

En la ventana Parallel Tasks es posible visualizar las tareas en ejecución, las tareas programadas, y las tareas que están en espera de ser reactivadas.

image

Además para cada elemento podemos congelar una tarea, cambiar el contexto a la misma o congelar todas las tareas menos una en particular.

image

En la ventana Parallel Stacks, es posible ver de forma gráfica los threads en ejecución y la relación entre los mismos (lo que conocemos como Call Stack, pero de forma gráfica). Además aprovechando la potencia de WPF, podemos gestionar el zoom en este diagrama para ver en mayor o menor detalle, el panorama global de ejecución.

image

Todavía no me alcanzan las palabras para describir lo importante que puede ser esto en depuraciones realmente complejas. Y si bien no funciona con el Historical Debugging (es mucho pedir ya lo sé, pero pedir es gratis) creo que puede ser de gran ayuda para estabilizar esas aplicaciones un poco raras que andan dando vueltas por alli y para terminar de comprender como funcionan estas aplicaciones.

image

 

Saludos @ Rio IV

El Bruno

[VSTS2010] Identificando las secciones nuevas, y editadas en los documentos gracias al Document Margin

Buenas,

la sección/característica llamada Document Margin incorporada en el editor de archivos en Visual Studio 2010 permite entre otras cosas visualizar el navegador para el depurador histórico, visualizar los cambios en el modo Annotate, etc. Lo interesante de esta sección es que también permite adaptarla a nuestras necesidades o gustos utilizando el modelo de extensibilidad de Visual Studio. Además, para las tareas más simples, esta sección nos puede ayudar mucho, como por ejemplo en la edición de un archivo de texto plano.

El siguiente paso a paso demuestra esta funcionalidad en su modo más simple.

Tutorial

1. Supongamos que dentro de nuestro Source Control, existe un archivo llamado Demo.txt.

image

2. Si hacemos doble click o desplegamos el botón derecho sobre el archivo y seleccionamos la opcion View; veremos como se abre el editor de texto de Visual Studio 2010.

image

3. Nos centraremos sobre la zona izquierda del editor, que está en con un color de fondo en gris.

4. Si ponemos el cursor sobre el final del texto y presionamos [Enter]; veremos como el archivo se desbloquea para la edición del mismo y como el nuevo texto, aparece con una línea amarilla en la sección izquierda.

image

5. Agregamos nuevo texto y vemos como la línea amarilla identifica al texto nuevo, pero sin grabar del archivo que estamos editando.

image

6. Si guardamos el documento, veremos como las modificaciones se identifican ahora en color verde, es decir, que ya se han grabado.

image

7. De esta forma fácilmente podemos ver el texto nuevo, y el que todavía no está grabado en un documento. Por ejemplo, en la siguiente imagen podemos ver como en verde está el texto original ya grabado; y en amarillo un nuevo texto agregado al documento. (antes que ningún lector se enfade y critique como le pasó a Jorge he hecho Copy/Paste desde un post propio, disculpad por autoplagiarme)

image

Saludos @ Home

El Bruno

[OFFTOPIC] Sabes cuantas horas se trabaja por semana en cada pais?

Buenas

la siguiente imagen muestra un gráfico con la cantidad de horas que se trabajan por semana en algunos paises. En el caso de España, cuando vuelva de vacaciones tendré que conocer a los que tiran el promedio a 31 horas por semanas, porque yo trabajo un poquito más.

3797144896_e5abba1cd0_o[1]

Las conclusiones saltan a la vista, ¿no?

Saludos @ Here

El Bruno

Fuente: http://blogs.msdn.com/stevecla01/archive/2009/08/18/working-around-the-world.aspx

[VSTS2010] Agregando una ventana de Video a nuestro editor de clases (thanks MEF !!!)

Buenas,

durante los últimos meses estoy viendo como cada vez más personas y empresas aprovechan el excelente modelo de extensibilidad que se ha incorporado en Visual Studio 2010, y crean excelentes extensiones para el IDE de Visual Studio. Lamentablemente estas empresas enfocan su trabajo orientado a mejorar la productividad del usuario pero ninguna piensa en el el ocio: por ejemplo en la posibilidad de ver videos de Channel 9 dentro de Visual Studio mientras uno codifica.

Esto es relativamente fácil y en 5 minutos lo podemos tener funcionando. En el siguiente tutorial describo como hacerlo.

Tutorial

1. Para aprovechar un poco de trabajo ya creado, aprovecharemos uno de los templates que existen en la Beta 1, y crearemos un proyecto del tipo Editor Margin.

image

2. En el proyecto de extensibilidad podremos ver que el mismo posee 2 clases principales: GreenMargin.cs y MarginFactory.cs.

image

3.  Renombramos la clase GreenMargin por C9VideoMargin.

4. Modificamos el codigo como en el siguiente ejemplo. He dejado sin código las regiones en las líneas 46 a 50 para no tener que copiar todo el código.

   1:  using System;
   2:  using System.Windows.Controls;
   3:  using System.Windows.Media;
   4:  using Microsoft.VisualStudio.Text.Editor;
   5:   
   6:  namespace ElBruno.VSIDE.Channel9Viewer
   7:  {
   8:    class C9VideoMargin : Canvas, IWpfTextViewMargin
   9:    {
  10:      //The name of the margin
  11:      public const string MarginName = "C9VideoMargin";
  12:   
  13:      // The IWpfTextView that our margin will be attached to.
  14:      private IWpfTextView _textView;
  15:   
  16:      // A flag stating whether this margin has been disposed
  17:      private bool _isDisposed = false;
  18:   
  19:      /// <summary>
  20:      /// Creates a <see cref="C9VideoMargin"/> for a given <see cref="IWpfTextView"/>.
  21:      /// </summary>
  22:      /// <param name="textView">The <see cref="IWpfTextView"/> to attach the margin to.</param>
  23:      public C9VideoMargin(IWpfTextView textView)
  24:      {
  25:        // Set the IWpfTextView
  26:        _textView = textView;
  27:   
  28:        // Establish the background of the margin.
  29:        this.Height = 20;
  30:        this.ClipToBounds = true;
  31:        this.Background = new SolidColorBrush(Colors.Orange);
  32:   
  33:        MediaElement videoChannel9 = new MediaElement()
  34:        {
  35:          Source = new Uri("http://mschnlnine.vo.llnwd.net/d1/ch9/1/8/3/0/5/4/VSTS08_ch9.wmv")
  36:        };
  37:        this.Children.Add(videoChannel9);
  38:      }
  39:   
  40:      private void ThrowIfDisposed()
  41:      {
  42:        if (_isDisposed)
  43:          throw new ObjectDisposedException(MarginName);
  44:      }
  45:   
  46:      #region IWpfTextViewMargin Members
  47:      #endregion
  48:   
  49:      #region ITextViewMargin Members
  50:      #endregion
  51:    }
  52:  }

5. El constructor de la clase (definido entre las líneas 23 y 38) es el encargado de decorar a la ventana de edición de código con un nuevo visor de videos (basado en un MediaElement) y luego asociar al mismo la ruta de un video de Channel 9. En este caso un video de casi 20 minutos donde hago un recorrido por VSTS: Un paseo por Visual Studio Team System 2008.

5. Una vez agregado el decorador que en el margin del editor de código agregará el visor de Video, debemos modificar la clase MarginFactory para que agregue el decorador en la sección superior. El siguiente cógigo muestra un ejemplo de la versión original modificada. En la línea 10 podemos ver como se define que el contenedor estará en la zona superior.

   1:  using System.ComponentModel.Composition;
   2:  using Microsoft.VisualStudio.Text.Editor;
   3:  using Microsoft.VisualStudio.Utilities;
   4:  namespace ElBruno.VSIDE.Channel9Viewer
   5:  {
   6:    #region ElBruno.VSIDE.Channel9Viewer Factory
   7:    [Export(typeof(IWpfTextViewMarginProvider))]
   8:    [Name("GreenBar")]
   9:    [Order(After = "HorizontalScrollbar")]
  10:    [MarginContainer(MarginContainerAttribute.Top)]
  11:    [ContentType("text")]
  12:    [TextViewRole("interactive")]
  13:    internal sealed class MarginFactory : IWpfTextViewMarginProvider
  14:    {
  15:      public IWpfTextViewMargin CreateMargin(IWpfTextViewHost textViewHost, IWpfTextViewMargin containerMargin)
  16:      {
  17:        return new C9VideoMargin(textViewHost.TextView);
  18:      }
  19:    }
  20:    #endregion
  21:  }

6. Una vez completado el ejemplo, ya podemos ejecutar el mismo y veremos como se levanta una nueva instancia del entorno esperimental de trabajo de Visual Studio para que probemos esta extensión

image

7. Si creamos un nuevo proyecto del tipo Class Library u otro que nos permita acceder a un editor de código podremos ver como en el mismo, en la sección superior comienza a pasar automáticamente el video de Channel 9 con el fondo naranja que definimos en la clase C9VideoMargin, en la línea 31.

image image

 

En pocos pasos hemos agregado un visor de videos a nuestro entorno de trabajo y después con un poco más de tiempo, podríamos acomodar el tamaño (150 pixels es poco a nivel Height), incorporar una barra de navegación, etc.

El código de la demo se puede descargar desde http://cid-bef06dffdb192125.skydrive.live.com/self.aspx/Code%20Samples/2009%2008%2017%20ElBruno.VSIDE.Channel9Viewer.zip

Espero poder sacar un poco más de tiempo en vacaciones para poder cerrar alguna extension interesante no orientada a la productividad.

 

Saludos @ Rio IV

El Bruno