[EVENTO] Materiales del evento: Gestionando Proyectos con Visual Studio 2010 ALM

image47dd1de4

Buenas,

después de una hora intensa dando un repaso a Visual Studio 2010 y Team Foundation Server 2010, aquí dejo la presentación y los links con los materiales que he utilizando en el evento.

Links:

 

Saludos @ Madrid (aunque más cerca de Cadiz)

El Bruno

   

[MSDN] Retos MSDN (por si no te aburrias suficiente en verano)

image47dd1de4

Buenas,

desde hace unos días están publicados una serie de retos, que dicho de forma común son problemitas con ganas de romperte la cabeza y sacarte de las casillas, para que te mantengas al días con las últimas tecnologías que están promoviendo los chicos de Microsoft. La idea es que una vez que se publiquen los retos, a la semana se publicará la solucín de los mismos, pero bueno en esa semana podrás tener una excusa para juguetear con estas tecnologías.

Por ahora tenemos los siguientes temas planteados y en el hashtag #RetosMSDN hay más info Open-mouthed smile

 

Saludos @ Benidorm, house of guiris

El Bruno

   

Fuente: http://blogs.msdn.com/b/esmsdn/archive/2011/07/05/los-retos-del-verano.aspx

[TFS2010] HowTo: Eliminar un WorkItem

image47dd1de4

Buenas,

eliminar un WorkItem no es una tarea que sea de las más recomendadas. Principalmente porque si has creado un WI que no es útil, es decir te has equivocado, pues quien te dice que no te equivoques y elimines un WI que no es el correcto. Asi que sobre estas bases, nuestros amigos de Redmond habían escondido esta opción muy dentro de las tripas de TFS y hasta las power tools de TFS2008, no teníamos opción de eliminar un WI.

En Team Foundation Server 2010 se ha incorporado una nueva herramienta llamada WitAdmin que entre otras cosas nos permite eliminar un WorkItem desde la línea de comandos con la siguiente sintaxis:

C:Program Files (x86)Microsoft Visual Studio 10.0Common7IDE>witadmin.exe destroywi /collection:http://<tfs>:8080/tfs/<tpc> /id:<WorkItemId>

donde <tfs> es el nombre de nuestro server, <tpc> es la Team Project Collection sobre la que trabajaremos y finalmente <WorkItemId> es el id del WI que se desea eliminar.

Además de poder eliminar un WI, estas son otras opciones que provee la herramienta:

  • changefield

      Changes properties of the field.

      Usage: witadmin changefield /s server /n typename [/name newname]
      [/syncnamechanges true|false] [/noprompt]

      /s                               Specifies the Team Foundation application-tier server. Either use the application-tier server name, or a fully
                                         specified URL such as http://tfs:8080.
      /n                              The reference name of the field.
      /name                        The new name of the field.
      /syncnamechanges    Indicates whether or not the field’s values should be
                                        updated in response to identity name changes.
      /noprompt                Turns off the confirmation message.

  • deactivatelinktype

      Deactivates the specified link type.  Users will no longer be able to create
      new links with this type. Existing links of this type will continue to function
      correctly.

      Usage: witadmin deactivatelinktype /s server /n typename

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /n    Specifies the link type to deactivate using either the link type name
             or reference name.

  • deletefield

      Deletes the specified field using the reference name.

      Usage: witadmin deletefield /s server /n typename [/noprompt]

      /s           Specifies the Team Foundation application-tier server. Either
                    use the application-tier server name, or a fully specified URL
                    such as http://tfs:8080.
      /n           Specifies the reference name of the field to be deleted.
      /noprompt    Turns off the confirmation message.

  • deletelinktype

      Deletes the specified link type from the specified server.

      Usage: witadmin deletelinktype /s server /n typename [/noprompt]

      /s           Specifies the Team Foundation application-tier server. Either
                    use the application-tier server name, or a fully specified URL
                    such as http://tfs:8080.
      /n           Specifies the link type to delete. The link type name or
                    reference name can be used.
      /noprompt    Turns off the confirmation message.

  • destroygloballist

      Destroys a global list.

      Usage: witadmin destroygloballist /s server /n typename [/noprompt] [/force]

      /s           Specifies the Team Foundation application-tier server. Either
                    use the application-tier server name, or a fully specified URL
                    such as http://tfs:8080.
      /n           Specifies the name of the global list to destroy.
      /noprompt    Turns off the confirmation message.
      /force       Turns off validation that the an item is not in use before being
                    destroyed.

  • destroywi

      Destroys a work item or work items.  Currently, work items can only be
      destroyed.  Destroying a work item means the work item is physically deleted
      and cannot be restored.  The system does not support logical (and thus
      recoverable) deletion of work items.

      Usage: witadmin destroywi /s server /id id [/noprompt]

      /s           Specifies the Team Foundation application-tier server. Either
                    use the application-tier server name, or a fully specified URL
                    such as http://tfs:8080.
      /id          Specifies the ID of the work item to destroy.  Supports multiple
                    IDs delimited by commas such as 12,15,23 (with no whitespace).
      /noprompt    Turns off the confirmation message.

  • destroywitd

      Destroys a work item type.  Currently, work item types can only be destroyed.
      Destroying a work item type means that work items of that type are physically
      deleted and cannot be restored.  It does not support logical (and thus
      recoverable) delete of work item types.

      Usage: witadmin destroywitd /s server /p project /n typename [/noprompt]

      /s           Specifies the Team Foundation application-tier server. Either
                    use the application-tier server name, or a fully specified URL
                    such as http://tfs:8080.
      /p           Specifies the name of the team project.
      /n           Specifies the name of the work item type to destroy.
      /noprompt    Turns off the confirmation message.

  • exportcategories

      Exports the XML definition of a project’s work item type categories.

      Usage: witadmin exportcategories /s server /p project [/f filename] [/e
      encoding]

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /p    Specifies the name of the team project.
      /f    Specifies the destination file for exporting the work item type
             category XML. If not specified, the XML is output to the display.
      /e    Specifies the name of the .NET Framework 2.0 encoding used to import
             the XML.  For example, /e utf-7 will use Unicode (UTF-7) encoding.  By
             default, encoding is automatically detected when it is possible.  If the
             encoding can not be detected automatically, UTF-8 is used.

  • exportgloballist

      Exports the XML definition of global lists defined on a Team Foundation
      Server.

      Usage: witadmin exportgloballist /s server [/f filename] [/e encoding]

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /f    Specifies the destination file for exporting the global list XML. When
             it is not specified, the XML is output to the display.
      /e    Specifies the name of the .NET Framework 2.0 encoding used to import
             the XML.  For example, /e utf-7 will use Unicode (UTF-7) encoding.  By
             default, encoding is automatically detected when it is possible.  If the
             encoding can not be detected automatically, UTF-8 is used.

  • exportlinktype

      Exports the XML definition of a link type.

      Usage: witadmin exportlinktype /s server [/n typename] [/f filename] [/e
      encoding]

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /n    Specifies the name of the work item link type that is to be exported.
      /f    Specifies the destination file for exporting the link type XML. When it
             is not specified, the XML is output to the display.
      /e    Specifies the name of the .NET Framework 2.0 encoding used to import
             the XML.  For example, /e utf-7 will use Unicode (UTF-7) encoding.  By
             default, encoding is automatically detected when it is possible.  If the
             encoding can not be detected automatically, UTF-8 is used.

  • exportwitd

      Exports the XML definition of a work item type.

      Usage: witadmin exportwitd /s server /p project /n typename [/f filename] [/e
      encoding] [/exportgloballists]

      /s                    Specifies the Team Foundation application-tier server.
                             Either use the application-tier server name, or a fully
                             specified URL such as http://tfs:8080.
      /p                    Specifies the name of the team project.
      /n                    Specifies the name of the work item type to export.
      /f                    Specifies the destination file for exporting the work
                             item type XML. If not specified, the XML is output to
                             the display.
      /e                    Specifies the name of the .NET Framework 2.0 encoding
                             used to import the XML.  For example, /e utf-7 will use
                             Unicode (UTF-7) encoding.  By default, encoding is
                             automatically detected when it is possible.  If the
                             encoding can not be detected automatically, UTF-8 is
                             used.
      /exportgloballists    Exports the definitions of referenced global lists.  If
                             not specified, global list definitions are omitted.

  • importcategories

      This command imports a work item type category XML file into a team project on
      a Team Foundation Server.  If a category with the same name already exists, the
      new category definition will overwrite the existing definition.  If the work
      item type does not already exist, a new category will be created.

      Usage: witadmin importcategories /s server /p project /f filename [/e
      encoding]

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /p    Specifies the team project in which the categories are imported. 
      /f    Specifies the work item type category XML file to import.
      /e    Specifies the name of the .NET Framework 2.0 encoding used to import
             the XML.  For example, /e utf-7 will use Unicode (UTF-7) encoding.  By
             default, encoding is automatically detected when it is possible.  If the
             encoding can not be detected automatically, UTF-8 is used.

  • importgloballist

      Imports global lists from an XML definition file onto a Team Foundation
      Server. If a global list that has the same name already exists, the imported
      definition will overwrite the existing definition.  If a global list does not
      already exist, a new one will be created.

      Usage: witadmin importgloballist /s server /f filename [/e encoding]

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /f    Specifies the global list XML definition file to be imported.
      /e    Specifies the name of the .NET Framework 2.0 encoding used to import
             the XML.  For example, /e utf-7 will use Unicode (UTF-7) encoding.  By
             default, encoding is automatically detected when it is possible.  If the
             encoding can not be detected automatically, UTF-8 is used.

  • importlinktype

      Imports a link type XML definition file into Team Foundation Server. If a link
      type with the same reference name already exists, it will be updated to match
      the imported link type. If the link type does not already exist, a new link
      type will be created.

      Usage: witadmin importlinktype /s server /f filename [/e encoding] [/v]

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /f    Specifies the file that contains the link type XML to import.
      /e    Specifies the name of the .NET Framework 2.0 encoding used to import
             the XML.  For example, /e utf-7 will use Unicode (UTF-7) encoding.  By
             default, encoding is automatically detected when it is possible.  If the
             encoding can not be detected automatically, UTF-8 is used.
      /v    Validates the work item type or link type XML without importing it.

  • importwitd

      This command imports a work item type XML definition file into a team project
      on a Team Foundation Server.  If a work item type with the same name already
      exists, the new work item type definition will overwrite the existing
      definition. If the work item type does not already exist, a new work item type
      will be created.

      Usage: witadmin importwitd /s server [/p project] /f filename [/e encoding]
      [/v]

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /p    Specifies the team project in which the new work item type is imported.
             This is required, except when the validation-only option is used.
      /f    Specifies the work item type XML definition file to import.
      /e    Specifies the name of the .NET Framework 2.0 encoding used to import
             the XML.  For example, /e utf-7 will use Unicode (UTF-7) encoding.  By
             default, encoding is automatically detected when it is possible.  If the
             encoding can not be detected automatically, UTF-8 is used.
      /v    Validates the work item type or link type XML without importing it.

  • indexfield

      This command turns indexing for a field on or off.

      Usage: witadmin indexfield /s server /n name /index on|off

      /s        Specifies the Team Foundation application-tier server. Either use
                 the application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /n        The reference name of the field whose indexing information will be
                 updated.
      /index    Specifies whether the field should be indexed.

  • listfields

      Shows field information. By default, this lists all fields on the Team
      Foundation Server. Optional parameters can be used to list only specific
      fields.

      Usage: witadmin listfields /s server [/n typename] [/unused]

      /s         Specifies the Team Foundation application-tier server. Either use
                  the application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /n         The reference name of the field to display.
      /unused    Shows all fields that are not being used on the Team Foundation
                  Server.

  • listgloballist

      Lists the names of the global lists on a server.

      Usage: witadmin listgloballist /s server

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
             http://tfs:8080.

  • listlinktypes

      Lists the available set of link types on a server.

      Usage: witadmin listlinktypes /s server

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
             http://tfs:8080.

  • listwitd

      Lists the names of the work item types in the given project.

      Usage: witadmin listwitd /s server /p project

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /p    Specifies the name of the team project.

  • reactivatelinktype

      Activates the specified link type.  Users will be able to create new links
      with this type.

      Usage: witadmin reactivatelinktype /s server /n typename

      /s    Specifies the Team Foundation application-tier server. Either use the
             application-tier server name, or a fully specified URL such as
      http://tfs:8080.
      /n    Specifies the link type to activate using either the name or reference
             name.

  • rebuildcache

      This command invalidates cached data about work item types on all clients.
      Each client will refresh its cache the next time that it connects to the
      server. To avoid server performance issues, you should not run this command
      during typical operating hours.

      Usage: witadmin rebuildcache /s server [/noprompt]

      /s           Specifies the Team Foundation application-tier server. Either
                    use the application-tier server name, or a fully specified URL
                    such as http://tfs:8080.
      /noprompt    Turns off the confirmation message.

  • renamewitd

      Renames an existing work item type.  Changes the display name of a work item
      type within a specific project.  Also, the work items of that type are updated
      to reflect the new work item type name.

      Usage: witadmin renamewitd /s server /p project /n typename /new newname
      [/noprompt]

      /s           Specifies the Team Foundation application-tier server. Either
                    use the application-tier server name, or a fully specified URL
                    such as http://tfs:8080.
      /p           Specifies the name of the team project.
      /n           Specifies the name of the work item type to rename.
      /new         Specifies the new name for the work item type.
      /noprompt    Turns off the confirmation message.

  • reportfield

      Specifies whether and how the field is included in the data warehouse for
      reporting. For more information about how to use fields for reporting, see
      http://go.microsoft.com/fwlink/?LinkId=78060.

      Usage: witadmin reportfield /s server /n typename /t type [/formula formula]
      [/noprompt]

      /s           Specifies the Team Foundation application-tier server. Either
                    use the application-tier server name, or a fully specified URL
                    such as http://tfs:8080.
      /n           Reference name of the field.
      /t           Specifies how the field is used in the warehouse for reporting
                    (dimension, detail, measure, disable).
      /formula     Specifies a formula when the field is reported as a measure. The
                    only supported formula is sum.
      /noprompt    Turns off the confirmation message.

Saludos @ Alicante

El Bruno

   

Referencias WitAdmin: http://blogs.microsoft.co.il/blogs/shair/archive/2009/05/20/visual-studio-2010-witadmin-command-line-utility-commands.aspx

[TFS2010] HowTo: Utilizar el proveedor MSSCCI con Visual Basic 6

image47dd1de4

Buenas,

antes de empezar unas bien merecidas vacaciones vamos a terminar los posts que tengo en modo draft desde hace un tiempo. En primer lugar toca revisar el paso a paso para trabajar con el proveedor de MSSCCI para Team Foundation Server 2010 desde Visual Basic 6.

El punto más importante a tener en cuenta es el orden de instalación de los productos, siempre teniendo en cuenta que los service packs de los mismos son bienvenidos.

1. Visual Basic 6 Enterprise Edition

2. Visual Source Safe, en este caso instalé la versión 2005 > Visual Source Safe 2005.

En este punto, si creamos un nuevo proyecto en Visual Basic 6, veremos que tenemos la opción de conectar el mismo a Visual Source Safe desde el menú Tools

image

Además tenemos la clásica ventana de checkin propia de VB6 + VSS

image

3. Team Explorer 2010, o Visual Studio 2010. Una de las versiones del IDE que nos permita conectarnos a Team Foundation Server 2010.

4. Team Foundation Server MSSCCI Provider 2010.

En este punto vemos que la configuración por defecto de VB6 + VSS ha cambiado y ya podemos trabajar con Team Foundation Server.

image

Y al momento de proteger nuestros cambios, ya veremos el formulario de CheckIn de Team Foundation Server.

image

 

Hasta aquí el detalle más simple, pero lo importante es tener en cuenta el orden de instalación, ya que sin tener instalado Visual Source Safe, yo no he conseguido que MSSCCI me tome los cambios. En Visual Studio 2010 es más simple, ya que las entradas de los Source Control Providers se encuentran en el registro en [HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio10.0_ConfigSourceControlProviders]

image

pero con Visual Basic 6, no he tenido tanta suerte Open-mouthed smile

 

Saludos @ Home

El Bruno

   

[VNEXT] Mejorando la versión de Visual Studio entre todos

image47dd1de4

Buenas,

quick post aunque seguro que ya lo sabés porque el amigo Luis Fraile, ya lo comentó por aquí hace unos días. Resulta que después de Visual Studio 2010 y de cara a la nueva versión de Visual Studio llamada vNext, los amiguetes de Redmond han decidido lanzar una encuesta pública para que cada uno pueda aportar su granito de arena.

Obviamente lo que más hay son quejas sobre el funcionamiento de Visual Studio 2010, recordemos que quejarse es un deporte muy popular y gratuito en internet, pero después hay algunos muy interesantes como por ejemplo:

  • Crear una herramienta única de administración para TFS, Reporting Services y Sharepoint. Algo parecido a lo que hace TFS Admin Tool en CodePlex. http://bit.ly/qdhlaq
  • NuGet everywhere, lo pueden ver aquí y aquí.
  • Búsquedas en la información que almacena TFS. Es increíble que todavía no tengamos eso, pero bueno hay un par de elementos abiertos, por ejemplo: http://bit.ly/reYx3H

Y muchos más, so … si tienes algo que te gustaría en vNext, pues a solicitarlo Open-mouthed smile

Saludos @ Here

El Bruno

   

[TEAMBUILD] HowTo: Crear in informe de resultado de Builds con EXCEL (I)

image47dd1de4

Buenas,

hace unos días, en los foros de MSDN en Español, Angel preguntaba sobre como crear un informe con información sobre el detalle de las Builds que procesa Team Foundation Server 2010. Yo comenté que una opción era crear un informe en Excel a partir de los datos del cubo de Team Foundation Server y para eso los siguientes pasos demuestran como crear este informe.

Tutorial

1. Abrir Excel (obvio no?)

2. Acceder a la Ribbon [Data] y a la opción [From Analysis Services]

3. Ingresar los datos de la conexión al cubo de Tem Foundation Server.

4. En el panel de PivotTable seleccionar [Build Details]

5. Seleccionar

Build Details Count

Build Details Duration

6.  Seleccionar

Build // Build Definition Name

Build Status // Build Status

7. Las opciones deberían quedar similar a la siguiente imagen

image

8. Y el informe queda de la siguiente manera, donde podemos ver la duración de cada Build y el estado de las mismas

image

9. Agregando un par de fechas al informe, podemos ver, por ejemplo el resultado de la ejecución de las builds para las fechas de Marzo del 2010.

image

En el próximo post, más información al respecto Open-mouthed smile

 

Saludos @ Home

El Bruno

   

[ALM] La herramienta adecuada para cada problema (hasta el Valentino lo ha entendido)

imageBuenas,

en estos días estoy teniendo conversaciones de las buenas con el Valentino (mi enano de 3 años) relacionados con “el rayo de la muerte”. Hasta donde hemos definido los conceptos, el rayo de la muerte es el arma más poderosa del mundo y puede destruir una avispa que nos molesta en la piscina, descacharrar un coche amigo de Rayo McQueen, o destruir un planeta donde viven muchos malos. Sin ir más lejos, hace un par de días, cuando estábamos jugando en la piscina, y vimos una avispa que nos molestaba, pues yo le pregunté que como podíamos sacarnos a la pesada de encima, y teniendo a mano 20 cosas que podríamos haber utilizado, la respuesta del Valentino fue: “la quemamos con con el rayo de la muerte !!!”, vamos que el Valentino no se anda con chiquitas.

Yo intenté explicarle que si tuviésemos un rayo de la muerte a mano, podríamos hacer cosas más divertidas que matar a una simple avispa; como por ejemplo, hacer un hueco en el océano Atlántico para que se arme el remolino de agua más grande del mundo y esas cosas. Que para espantar a una avispa, con una revista alcanza. Y claro, por un lado el Valentino entendió la idea, pero por otro se quedó decepcionado por no usar el rayo de la muerte. Eso sí, cuando nos pusimos a tirarle cosas a la avispa para que se vaya, le dimos al panal de avispas y nos empezaró a perseguir un enjambre de los buenos, la diversión estuvo asegurada. Además de de la posterior charla que nos dió la mamá relacionada con jugar con avispas.

Sin tener que recurrir al ejemplo del rayo de la muerte, a mi cada tanto me toca dar este tipo de charlas en el trabajo; charlas relacionadas con elegir la herramienta o el grupo de herramientas correctas para cada problema que tengamos que encarar.

Cuando me encuentro a un fanático que piensa que puede gestionar cualquier proyecto completamente con PostIts y Story Walls, pues le cuento que para trabajar en conjunto con 3 grupos de trabajo en diferentes zonas horarias, con un seguimiento del budget bastante estricto, por ejemplo; pues además del “tablero” tendremos que recurrir a algún tipo de herramienta más. Es necesario elegir algún sistema de video comunicación muy ágil, definir horarios coherentes para los daily scrums, seleccionar una herramienta para la gestión de incurridos, algo para coordinarnos con el área comercial, etc.  Vamos que esto que he comentado es lo primero que pondríamos en el tablero para ir dando los primeros pasos, pero luego deberíamos comenzar a crear una dinámica de trabajo que integre todas estas herramientas. La frase “solo con PostIts y un tablero me las arreglo”, pues no es cierta.

Del mismo modo, cuando para un desarrollo rápido me encuentro con un consultor de turno que quiere montar un gestor de incidencias en un entorno de alta disponibilidad, quiere montar toda la aplicación en la nube porque está de moda y obviamente hacer que la aplicación sea compatible con iPods, iPads, iPhones, Androids, Windows Phone 7 y con el teléfono de mi tía, pues le explico que para una prueba de concepto de un proceso asíncrono de transformación de datos bancarios, pues solo hace falta un par de informes (htmls) con el resultado del proceso y poco más.

Y ni hablar de los que quieren hacer de todo con una única herramienta !!! En el caso de las metodologías Waterfall, pues he visto como la combinación de Word + Excel ha reemplazado completamente a la esencia de un producto de software … pero claro, seguir es enrollarme y demasiado.

Con el Valentino lo tenemos claro:

A las avispas le tiramos lo que tengamos a mano para espantarlas, ahora bien; si alguna vez llega una nave espacial llena de marcianos malhumorados, ahi sacamos el rayo de la muerte y nos hacemos una fiesta liquidando marcianos.

Es una pena, que muchas veces sea más simple explicarle esto a mi hijo de 3 años que a algún compañero informático.

 

Saludos @ Home

El Bruno

   

PD: antes que me digan de todo, eso que se ve en la foto es un tablerito en mi nevera/heladera con el que gestionamos las tareitas y los pendientes en mi casa con mi chica y el Valentino. Las happy faces Open-mouthed smileobviamente son del Valentinoy la Martina empezará a sumar alguna cuando comienza a tener eso que llamamos sentido común.

[KINECT] Kinect Services for Microsoft Robotics Studio R3

image

Buenas,

si cuando el Valentino daba sus primeros pasos mi juguete preferido era el Lego Nxt para jugar con Microsoft Robotics Studio, pues con la Martina el juegue fué el Kinect. Al que tengo bastante abandonad por ahora para alegría de mi mujer pero para tristeza del Valentino.

Pues bien, ahora gracias a los amigos de Microsoft Research ya podemos descargar un paquete de servicios para Robotics Studio que utilizando el SDK de Kinect, nos permite interactuar con la misma.

El siguiente video muestra un ejemplo de las capacidades de este paquete:

Saludos @ Somewhere

El Bruno

   

Fuente: http://blogs.msdn.com/b/msroboticsstudio/archive/2011/07/13/announcing-kinect-services-for-rds-2008-r3.aspx

Download: http://research.microsoft.com/en-us/downloads/f8cda115-e9ec-44d1-abcd-3dfdd09d2e77/

[#TFS2010] HowTo: Crear un informe de usuarios y Roles en 30 segundos

image47dd1de4

Buenas,

aquí va un truco de esos que pueden ahorrarte una mañana fea de trabajo, cuando tu jefe te pide que le envies un informe con los usuarios y permisos que existen en un servidor Team Foundation Server 2010 sobre el que han pasado más manos que en la vecina mía de barrio esa que era muy cariñosa.

Entonces, en lugar de recorrer por separado, Team Foundation Server, Reporting Services y SharePoint, pues lo mejor es descargar TFS Administration Tool desde CodePlex y en la misma nos conectamos a uno o más Team Projects.

image

 

Una vez conectados, seleccionamos todo el listado de usuarios, lo copiamos y …. paf !!!! paste en Excel, donde después de un poco de formato, ya tenemos el listado solicitado.

image

 

Saludos @ Majadahonda

El Bruno

   

[#TEAMBUILD2010] HowTo: Incorporar Code Metrics en la ejecución de una Build

image47dd1de4

Buenas,

basado en el post que escribí hace unos días sobre como crear una definición de Build para realizar análisis de código utilizando StyleCop para Team Build 2010 utilizando las Tfs Build Extensions, hoy toca un post similar pero para incorporar el análisis de métricas de código dentro de la ejecución de una build.

Para esto nos basaremos en el post anterior, pero a partir del punto 9 crearemos una nueva definición de Team Build, y seguiremos los siguientes pasos:

1. Una vez agregadas las referencias para poder utilizar Tfs Build Extensions, podremos ver que en la toolbox poseemos una actividad llamada [Code Metrics]. Esta actividad es la que utilizaremos para realizar el análisis de código.

image

2. Dentro de la opcion

Secuence > Run on Agent > Try Compile, Test, and Associate Changesets and Work Items > Secuence > Compile, Test, and Associate Changesets and Work Items > Try Compile and Test > Compile and Test > For Each Configuration in BuildSettings.PlatformConfigurations > Compile and Test for Configuration > If BuildSettings.HasProjectsToBuild > For Each Project in BuildSettings.ProjectsToBuild > Try to Compile the Project > Compile the Project

luego de la actividad [Run MSBuild for Project], agregaremos una Secuence a la que llamaremos [Run Code Metrics Analysis]

image

3. Dentro de la secuencia agregaremos 2 actividades de tipo [WriteBuildMessage] para mostrar el inicio y fin del proceso de análisis con Code Metrics.

  • Start Activity
    • DisplayName = Start Code Metrics Analysis
    • Message = “Start Code Metrics Analysis”
  • Finish Activity
    • DisplayName = Finish Code Metrics Analysis
    • Message = “Finish Code Metrics Analysis”

4. Entre ambas actividades agregaremos una nueva actividad de tipo [Code Metrics] con las siguientes propiedades definidas

  • DisplayName = Run Code Metrics Analysis
  • BinariesDirectory = BinariesDirectory
  • CyclomaticComplexityErrorThreshold = 40
  • CyclomaticComplexityWarningThreshold = 15
  • MaintanabilityIndexErrorThreshold = 10
  • MaintanabilityIndexWarningThreshold = 90
  • FilesToProcess = New List(Of String)(New String() {“ElBruno.StyleCopBuild.Demo.dll”})

Aclaración: si ponemos el filtro en “*.dll”, el proceso de Code Metrics intentará analizr también la dll de pruebas unitarias y para la carga de la misma es necesario contar con varios ensamblados del IDE de Visual Studio 2010.

5. Protegemos nuestros cambios en el servidor de Source Control y ya podremos crear una nueva definición de Build para utilizar este proceso.

6. Partiendo de la definición de build que cree hace 2 días, hago un clonado de la misma, desplegando el menú contextual y seleccionando la opción [Clone Build Definition]

image

7. En la nueva definición de build que se ha creado, cambio el nombre de la misma, para este ejemplo será [Team Build.Code Metrics] y a continuación deberé cambiar la plantilla de ejecucíón de la build.

8. Para cambiar la plantilla, selecciono la sección [Process] y despliego los detalles de la plantilla.

image

9. El combo de plantillas por defecto no debería mostrar mi nueva plantilla, por lo que selecciono la opción [New] y luego la opcion [Select an existing XAML file].

10. Realizando un [Browse] sobre el Source Control, seleciono la plantilla que he creado en los primeros pasos [BuildTemplateWithCodeMetrics.xaml] y la asigno como plantilla de ejecución.

image

11. Guardo la definición de la build y al momento de lanzar la misma, me encuentro con que en el resultado de la build hay un par de datos a tener en cuenta:

image

Como no hemos cumplido “los límites” definidos para el análisis de Code Metrics, pues la build no se da como Sucess, sino que nos aparece como Partially succeded. Y entre la lista de errores y warnings podemos ver el porqué de este estado.

12. Finalmente comentar que en el log de ejecución podremos ver el detalle por cada elemento de nuestros ensamblados del análisis de Code Metrics.

image

El código del ejemplo se puede descargar desde:

 

Saludos @ Algún sitio entre Caudete y Madrid

El Bruno