[CODEPLEX] Build Customization Guide

image47dd1de4

Buenas,

el equipo de Visual Studio ALM Rangers ha liberado un nuevo paquete de documentación + pruebas + Hand On Labs, etc.; en este caso relacionado con la personalización de builds para Team Foundation Server 2010.

Si bien TFS2010 y Team Build 2010 vienen con una serie de plantillas para la creación de builds asociadas con acciones de compilación y ejecución de pruebas unitarias; por lo general en casi todos los despliegues y personalizaciones de Team Foundation Server 2010 hay que hacer modificaciones sobre estas plantillas y esto tiene un trabajo asociado importante.

Este trabajo es importante por un lado, porque se basa en una tecnología que supuestamente es bastante amigable como es Workflow Foundation aunque después es un poco infernal de edigar y mantener, pero por otro lado hay una serie de buenas prácticas y de recomendaciones basadas en la experencia de trabajar con estas tecnologías, que no están escritas en ningún lado.

El 2do punto es el que intenta atacar la Build Customization Guide, y después de darle un vistazo a los contenidos desde las versiones iniciales internas, hasta esta primera versión pública me parece un excelente punto de partida para “conocer el entorno de Team Build” y las experiencias relacionadas con el mismo.

Antes de olvidarme, quiero comentar que esta guía no ha sido creada solamente por el equipo de producto de Microsoft, sino que además han participado MVPs, expertos de diferentes áreas, etc.; vamos que es una sumatoria de experiencias que esperemos que llegue a buen puerto.

 

Saludos @ Seattle

El Bruno

   

Referencias:

[VS2010] HowTo: Organize the definitions of Builds with Folders in the Team Explorer

image47dd1de4

Good,

today among so many problems that I found this extension for Visual Studio 2010 I was pleased the day. It presents the list of definitions of builds on a server Team Foundation Server 2010 organized with folders, to be able to view and organize them better.

It is incredible that this feature is not factory in Visual Studio 2010, but thanks to the work of the people of Inmeta, we already have a solution to this problem. (when you have many definitions of builds, really grateful this extension).

The basis of this extension is to organize the Builds separating them with the “.” which are in his name. The following image shows an example with the classical view of Builds in Team Explorer and the Inmeta build Explorerview. The 2nd is obviously much more comfortable.

image

Greetings @ Here

The Bruno

   

Source: http://channel9.msdn.com/coding4fun/blog/Long-list-of-Team-Builds-getting-you-down-Wish-you-could-put-them-in-folders-Dont-want-to-wait-for-a

Download: http://visualstudiogallery.msdn.microsoft.com/35daa606-4917-43c4-98ab-38632d9dbd45

Source Code: http://tfsbuildfolders.codeplex.com/

[VS2010] HowTo: Organizar las definiciones de Builds con Folders en el Team Explorer

image47dd1de4

Buenas,

hoy entre tantos problemas con los que me he encontrado, esta extensión para Visual Studio 2010 me ha alegrado el día. La misma presenta la lista de definiciones de builds en un servidor Team Foundation Server 2010 organizadas con folders, para poder visualizar y organizar mejor las mismas.

Es increíble que esta feature no esté de fábrica en Visual Studio 2010, pero gracias al trabajo de la gente de Inmeta, ya tenemos una solución a este problema. (cuando tienes muchas definiciones de builds, realmente agradeces esta extensión).

La base de esta extensión se encuentra en organizar las Builds separando las mismas con los “.” que estén en su nombre. La siguiente imagen muestra un ejemplo, con la vista clásica de Builds en el Team Explorer y la vista de Inmeta Build Explorer. Obviamente la 2da es mucho más cómoda.

 

image

Saludos @ Here

El Bruno

   

Fuente: http://channel9.msdn.com/coding4fun/blog/Long-list-of-Team-Builds-getting-you-down-Wish-you-could-put-them-in-folders-Dont-want-to-wait-for-a

Descarga: http://visualstudiogallery.msdn.microsoft.com/35daa606-4917-43c4-98ab-38632d9dbd45

Source Code: http://tfsbuildfolders.codeplex.com/

[VS2010] Introduction to StyleCop

image47dd1de4

Good,

StyleCop is a tool that analyzes C source code # and applies a set of style and consistency rules. You can run from within Visual Studio or integrated into a project of TeamBuild. It is quite useful when you want to ensure that the “aesthetic of your code” is consistent among themselves as well as having a good design of the architecture of your solution, respect the rules of design SOLID. This post is based on the 4.5RC version which can be downloaded from here.

A detail to keep in mind is that during the installation of the product, you can select the integration with Visual Studio 2010and also if you want the necessary files for MSBuild to add validations of StyleCop for compilations of Team Build.

image

For this example, I selected the 2 options.

We are on the first example of code that let us see what says StyleCop thereon. If we create a class library project with your class by default we find the following code:

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5:
   6: namespace StyleCopDemo01
   7: {
   8:     public class Class1
   9:     {
  10:     }
  11: }

And StyleCop tells us with 6 Warnings of the following details to take into account:

image

If we “move” the using within the Namespace, as indicated by the recent warnings, the code is in the following way:

   1: namespace StyleCopDemo01
   2: {
   3:     using System;
   4:     using System.Collections.Generic;
   5:     using System.Linq;
   6:     using System.Text;
   7:
   8:     public class Class1
   9:     {
  10:     }
  11: }

And actually, now we just have 2 warnings for those who worry about:

image

Add a bit of code over the example:

   1: public string Foo(int firstArgument, int secondArgument)
   2: {
   3:     var res = "no";
   4:     if (firstArgument == secondArgument)
   5:     {
   6:         res = "yes";
   7:     }
   8:     if (firstArgument > secondArgument)
   9:     {res = "maybe";}
  10:     return res;
  11: }

And now we’ll see how we have to worry about the fifth after the keys, the spaces between the elements between the keys, etc.

image

By default, StyleCop has enabled all the rules that have, which can be quite annoying; in particular with regard to the comments, as it not only recommend add tags in comments in all classes, but it also recommends headers in classes, sections of copyright, etc.

If you want to configure the set of rules with which we work, we can do so from the project in question. Select the same, deploy the contextual menu and select the option [StyleCop Settings]

image

In this form, we will see the different types of rules that apply during the analysis of StyleCop. My recommendation > disable those of documentation Open-mouthed smile

image

In the coming posts a little more about StyleCop and Team Build.

Greetings @ Here

The Bruno

   

[VS2010] Introduccion a StyleCop

image47dd1de4

Buenas,

StyleCop es una herramienta que analiza código fuente C# y aplica un conjunto de reglas de estilo y consistencia. Se puede ejecutar desde dentro de Visual Studio o integrado en un proyecto de TeamBuild. Es bastante útil cuando además de contar con un buen diseño de la arquitectura de tu solución, de respetar las reglas de diseño SOLID, quieres garantizar que la “estética de tu código” sea coherente entre sí. Este post se basa en la versión 4.5RC que se puede descargar desde aquí.

Un detalle a tener en cuenta es que durante la instalación del producto, puedes seleccionar la integración con Visual Studio 2010 y además si quieres los archivos necesarios para MSBuild para agregar validaciones de StyleCop durante compilaciones de Team Build.

image

Para este ejemplo, he seleccionado las 2 opciones.

Vamos por el primer ejemplo de código para que veamos lo que dice StyleCop al respecto. Si creamos un proyecto de bibloteca de clases con su clase por defecto nos encontramos con el siguiente código:

   1: using System;

   2: using System.Collections.Generic;

   3: using System.Linq;

   4: using System.Text;

   5:  

   6: namespace StyleCopDemo01

   7: {

   8:     public class Class1

   9:     {

  10:     }

  11: }

 

Y StyleCop nos avisa con 6 Warnings de los siguientes detalles a tener en cuenta:

image

Si “movemos” los using dentro del Namespace, como indican los últimos warnings, el código queda de la siguiente forma:

   1: namespace StyleCopDemo01

   2: {

   3:     using System;

   4:     using System.Collections.Generic;

   5:     using System.Linq;

   6:     using System.Text;

   7:  

   8:     public class Class1

   9:     {

  10:     }

  11: }

Y efectivamente, ahora solo tenemos 2 warnings por los que preocuparnos:

image

Agregamos un poco de código más al ejemplo:

   1: public string Foo(int firstArgument, int secondArgument)

   2: {

   3:     var res = "no";

   4:     if (firstArgument == secondArgument)

   5:     {

   6:         res = "yes";

   7:     }

   8:     if (firstArgument > secondArgument)

   9:     {res = "maybe";}

  10:     return res;

  11: }

 

Y ahora veremos como tenemos que preocuparnos por los espaciós después de las llaves, los espacios entre los elementos entre las llaves, etc.

image

 

Por defecto, StyleCop tiene activadas todas las reglas que posee, lo cual puede ser bastante molesto; en especial en lo referido a los comentarios, ya que no solo recomienda agregar tags de comentarios en todas las clases, sino que también recomienda headers en las clases, secciones de copyright, etc.

Si queremos configurar el set de reglas con el que queremos trabajar, podemos hacerlo desde el proyecto en cuestión. Seleccionamos el mismo, desplegamos el menú contextual y seleccionamos la opción [StyleCop Settings]

image

 

En este formulario veremos los diferentes tipos de reglas que se aplican durante el análisis de StyleCop. Mi recomendación > desactivar las de documentación Open-mouthed smile

image

 

En los próximos posts un poco más sobre StyleCop y Team Build.

 

Saludos @ Here

El Bruno

   

[VS20??] No más proyectos de Setup a partir del proximo Visual Studio

image

Buenas,

pues el título del post te lo dice todo >

A partir de Visual Studio 20XX no se incluirán más los proyectos de Setup (vdproj).

El post de Buck Hodges lo explica en detalle, aunque creo que es un excelente momento para matar estos tipos de proyectos y comentar a utilizar y extender WiX. Asi que ya sabes, si creas proyectos de setup, pues a pasarse a Wix, InstallShield, etc.

Saludos @ Home

El Bruno

   

Referencia: http://blogs.msdn.com/b/buckh/archive/2011/03/17/visual-studio-setup-projects-vdproj-will-not-ship-with-future-versions-of-vs.aspx?goback=%2Egde_104499_news_430263827

[CODEPLEX] Herramienta para editar Test Steps sin necesidad de utilizar Microsoft Test Manager 2010

image

Buenas,

dando vueltas por la web en busca de otras cosas, me encontré con este interesante proyecto en CodePlex: una herramienta para editar los Test Steps de los Test Cases sin utilizar Microsoft Test Manager 2010.

Segúnmi humilde criterio, un gran error en Visual Studio 2010, es que si bien puedes crear Test Cases desde dentro del IDE, para editar el detalle de los pasos de los mismos necesitas Microsoft Test manager 2010. Un momento, que yo no soy tonto y sé que esto está diseñado según el esquema de productos de Visual Studio 2010, etc. Pero habilitar la grid de datos dentro del IDE, hubiese significado un gran avance en este aspecto.

El boton [Open for edit]

image

nos lleva directamente a MTM2010, donde ya podremos editar los pasos del Test Case.

image

Pues bien, si no queremos acceder a MTM pero necesitamos modificar estos Test Steps, la herramienta de CodePlex: Test Step Editor puede ser una gran alterantiva.

image

Obviamente, no es un reemplazo para MTM2010, ni mucho menos, pero para una edición rápida y limpia de pasos de tests, es una gran alternativa.

 

Saludos @ Home

El Bruno

   

Descarga: http://teststepseditor.codeplex.com/

[TFS2010] MOVIENDO/SINCRONIZANDO CONTENIDOS ENTRE DIFERENTES TEAM PROJECTS (II)

image47dd1de4

Buenas,

hace un par de días escribí un post donde comenté como se podía utilizar TFS Integration Platform para sincronizar/mover contenidos entre 2 Team Projects. El ejemplo era bastante simple:

Copiar contenidos desde Tailspin Toys hacia TPA

El resultado fué un éxito (cosa simple cuando hay pocos datos a mover), y el post de hoy aprovecha ese punto de partida para dar solución a otro escenario

¿Qué sucede si se han generado nuevos contenidos o se han modificado contenidos en Tailspin Toys?

Pues la solución es utilizar el mismo proyecto de integración que utilizamos en el post original. Por ejemplo, si analizamos los cambios en los WorkItems podremos ver que el WorkItem 24 ha sufrido algunos cambios en el Team Project de origen:

image

De la misma forma, el archivo de la solución [Tailspin Toys\Development\Iteration 2\TailspinToys.sln] ha sufrido algunas modificaciones en el Team Project de origen:

image

Ahora bien, si lanzamos nuevamente el proyecto de sincronización desde la herramienta de TFS Integration Platform, podremos ver que en el proceso de Discovery > Analysis > Migration, hay nuevos elementos que se migran desde el Team Project de origen al Team Project de destino. De 30/113 elementos iniciales, ahora estamos en 31/121.

image

Si vemos el resultado de la migración, que ahora es más bien sincronización entre Tailspin Toys y TPA, veremos que la solución incluye el último cambio efectuado en el Source Control:

image

y el WorkItem 99 relacionado con el WI 24, tambien ha incorporado los cambios en su histórico:

image

En el próximo post, como utilizar una agenda para tener este proceso “casi automático”.

 

 

Saludos @ Home

El Bruno

   

[TFS2010] Moviendo/sincronizando contenidos entre diferentes Team Projects (I)

image47dd1de4

Buenas,

otro de los temas que surgió en la mesa redonda el miércoles con los chicos de MadridDotNet, estaba relacionado con la necesidad de mover contenidos desde un Team Project hacia otro Team Project. Si bien la plataforma de integración desarrollada por los Visual Studio ALM Rangers: TFS Integration Platform, no resuelve al 100% el problema, si nos permite mover/sincronizar los elementos del Source Control y los WorkItems entre 2 TPs.

En el siguiente paso a paso, demostraré como sincronizar los contenidos del Team Project [Tailspin Toys] que viene de ejemplo en las máquinas virtuales de Trial de Team Foundation Server 2010 hacia otro Team Project llamado [TPA].

Tutorial

1. Descargamos e instalamos la última versión de TFS Integration Platform desde CodePlex

2. Lanzamos la aplicación [TFS Integration]

image

3. Creamos un nuevo proyecto de integración seleccionado la opción [Create New]

4. Entre las plantillas de proyecto, ubicadas en

[%Program Files%\Microsoft Team Foundation Server Integration Tools\Configurations\Team Foundation Server]

seleccionamos [VersionControlAndWorkItemTracking.xml] que nos permitirá sincronizar contenidos del Source Control y WorkItems.

5. En este momento podremos ver en el formulario de configuración del proyecto que debemos completar los siguientes elementos:

  • Nombre del proyecto
  • Tipo de sincronización
  • Origen del Source Control
  • Destino del Source Control
  • Origen de los WorkItems
  • Destino de los WorkItems

6. Para este post, he definido el nombre como “Post01” y el tipo de sincronización como “One-way migration”.

7. En la sección [Version Control Selection // Left Source] seleccionamos el proveedor para conectarnos con TFS2010.

image

8. Seleccionamos el Team Project [Tailspin Toys] desde la colección correspondiente:

image

9. En la sección [Version Control Selection // Right Source] seleccionamos el proveedor para conectarnos con TFS2010 y a continuación el Team Project [TPA].

10. En este punto podemos definir los elementos del Source Control que queremos sincronizar desde un TP a otro. En este caso moveremos todo el contenido del Left Source en [Tailspin Toys] hacia una rama llamada [TfsSync] en el Team Project [TPA].

Seleccionamos esta rama:

image 

11. El mapeo del source control debería quedar similar a la siguiente imagen:

image

12. A continuación definiremos las opciones para la migración de WorkItems. En la sección [WorkItem Tracking Section // Left Source] seleccionamos el proveedor para TFS2010 y seleccionamos el Team Project [Tailspin Toys].

13. En la sección [WorkItem Tracking Section // Right Source] seleccionamos el proveedor para TFS2010 y seleccionamos el Team Project [TPA].

14. La configuración debe quedar similar a la siguiente imagen:

image

15. En la sección queries podemos definir un filtro específico para definir los WorkItems que deseamos sincronizar. Para este ejemplo, utilizaremos la opción por defecto que migra todos los elementos entre los 2 Team Projects.

16. Guardamos la configuración en la base de datos.

17. Lanzamos la sincronización con la opción [Current Migration // Start]. Esta opción nos muestra el formulario de sincronización, en el que podremos ver el progreso de la misma. Por ejemplo:

image

18. Una vez que se han descubierto los elementos a migrar, se procede a analizar el contenido de los mismos para ver si existe algún error potencial:

image

19. Finalizados los procesos de Discovery y Analysis, se procede a la migración:

image

20. Una vez finalizada la migración, podremos ver el resultado  la misma. En este punto es recomendable ver el Log de migración para comprender mejor el detalle de lo que realiza la herramienta.

image

21. Si dentro del Team Project [TPA] vemos el contenido del Source Control, veremos que se han importado los elementos desde el otro Team Project.

image

22. En el histórico de un elemento, podremos ver que se han replicado los elementos del histórico original del Team Project de origen y además en el comentario, se ha agregado información del proceso de migración/sincronización.

image

23. De la misma forma, si analizamos los WorkItems migrados, podremos ver que en el histórico de los mismos aparece la información histórica de los WI originales. En este caso, la User Story 99 del Team Project [TPA], se corresponde con el WorkItem 24 del Team Project [Tailspin Toys]. En el histórico podremos ver la referencia entre los mismos.

image

Hasta aquí un pequeño tutorial para la sincronización de datos entre 2 TPs, en el próximo post un poco más de información al respecto.

 

Saludos @ Home

El Bruno

   

[VS2010] Python Tools 1.0 Beta 1 integrado completamente en Visual studio 2010

Buenas,

hce un tiempo escribi sobre IronPython, esta adaptación de Python para el mundo .Net que se integra muy bien con Visual Studio 2010 y que además está publicado en CodePlex para que podamos ver las tripas del mismo.

El mismo equipo de desarrollo (hasta donde puedo entender) ha liberado una seria de herramientas que mejoran la integración con Visual Studio 2010 y que permiten tener muchas de las capacidades de VS2010 a disposición de los Python developers:

  • Intellisense
  • Depuración local y remota
  • Soporte para HPC con las herramientas de Microsoft
  • Soporte para la integración de IP en Azure
  • more

La verdad es que para poder tener acceso a este excelente lenguaje, solo hay que instalar un compilador y las tools:

Y a partir de allí, ya podemos trabajar con IronPython en nuestro Visual Studio 2010.

image

Saludos @ Home

El Bruno

   

Descarga: http://pytools.codeplex.com/