El Bruno

Blog dedicado a las experiencias del desarrollo con tecnologías Microsoft.

mayo 2008 - Posts

[TFS] HowTo: Crear un WorkItem utilizando el modelo de objetos ?

Buenas,

siguiendo con el ejemplo del anterior post, donde comentaba como con un par de líneas de código podemos conectarnos a un servidor Team Foundation Server 2008 y trabajar con la información del mismo; hoy quiero extender un poco más el ejemplo y comentar como crear un WorkItem utilizando el modelo de objetos de Microsoft.TeamFoundation en un ejemplo de pocas lineas en una aplicación de Consola.

Nota: alerta criticos de cine ... en el ejemplo faltan muchas comprobaciones, control de excepciones, etc; pero la idea es mostrar simplementye como se puede realizar esta tarea.

Seleción de un Team Project

En primer lugar he cambiado un poco la rutina que selecciona un Team Project para que se pueda interactuar sobre la misma:

''' <summary>
''' Lists the selected team projects.
''' </summary>
Sub SelectedTeamProjects()

Console.WriteLine(
"Select Team Project")

' iterate trough tfs selected projects
Dim i As Integer = 0
For Each projectInfo As ProjectInfo In dpp.SelectedProjects()
Console.WriteLine(
"{0} Name: {1}", i, projectInfo.Name)
i
= i + 1
Next

Console.WriteLine(
"Input team project number")
Dim res = Console.ReadLine
project
= dpp.DefaultSelectedProjects(Convert.ToInt32(res))

End Sub

De esta forma en la variable local project se almacena el Team Project con el que trabajaremos.

Selección del tipo de WorkItem

A continuación debemos seleccionar el tipo de WorkItem que queremos crear, para esto, con ejemplo similar al anterior, listamos los diferentes tipos de workitems y ofrecemos la opción de seleccionar uno.

''' <summary>
''' Lists the work item types.
''' </summary>
Sub SelectWorkItemTypes()

Console.WriteLine(
"Select WorkItemType")

' iterate trough tfs selected projects
Dim i As Integer = 0
For Each workItemType As WorkItemType In project.WorkItemTypes
Console.WriteLine(
"{0} Name: {1}", i, workItemType.Name)
Console.WriteLine(
" Name: {1}", i, workItemType.Description)
i
= i + 1
Next

Console.WriteLine(
"Input WorkItem type number")
Dim res = Console.ReadLine
workItemType
= project.WorkItemTypes(Convert.ToInt32(res))

End Sub

El resultado se almacena en la variable workItemType.

 

Creación de un nuevo WorkItem

Finalmente, con el proyecto seleccionado y el tipo de WorkItem definido, podemos crear un nuevo WorkItem y mostrar el formulario de edición del mismo.

''' <summary>
''' Creates the new work item.
''' </summary>
Sub CreateNewWorkItem()

Dim newWorkItem As WorkItem = workItemType.NewWorkItem()
newWorkItem.Open()

End Sub

 

El ejemplo completo es muy simple, pero la potencia del modelo de objetos de cliente para trabajar Team Foundation Server 2008 permite realizar todas las acciones que se pueden realizar desde Microsoft Visual Studio 2008; como por ejemplo automatizar acciones de CheckIn - CheckOut, crear o interactuar con la informacion de WorkItems dinámicamente, conocer el estado de los builds, etc.

El código completo de la aplicación de Consola se puede descargar desde http://geeks.ms/files/folders/elbruno/entry87483.aspx

 

Saludos @ Home

El Bruno

 

Share this post :

Posted sábado, 31 de mayo de 2008 20:18 by elbruno | with no comments

[TFS] HowTo: conectar a un servidor TFS utilizando el modelo de objetos ?

Buenas

mañana a 1ra hora por la mañana haremos un pequeño evento interno en Avanade, donde comentaremos las experiencias en varios proyectos <intentando> extender Team Foundation Server 2008. Digo intentando porque este trabajo es bastante delicado, pero para eso me ayudará en la presentación el amigo Edu.

Además esto me ha servido para rescatar algunos drafts de posts que tenía almacenados. Por ejemplo, estas pequeñas lineas de código que nos permiten utilizar el modelo de objetos de TFS para conectarnos a un servidor y listar los proyectos dentro del mismo.

Para hacer el ejemplo simple, dejaré las líneas de código fundamentales y comentaré un poco las mismas.

Agregar Referencias

Debemos agregar las siguientes referencias a nuestro proyecto, recordad que es necesario tener instalado el SDK de Visual Studio para poder acceder a las mismas:

  • "..\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Common\Assemblies\Microsoft.TeamFoundation.dll"
  • "..\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Common\Assemblies\Microsoft.TeamFoundation.Client.dll"
  • "..\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Common\Assemblies\Microsoft.TeamFoundation.Common.Library.dll"
  • "..\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Common\Assemblies\Microsoft.TeamFoundation.WorkItemTracking.Client"
  • "..\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Common\Assemblies\Microsoft.TeamFoundation.WorkItemTracking.Controls"

Conexion a Team Foundation Server

La siguiente rutina se conecta a Team Foundation Server 2008, utilizando la ventana "clásica" de conexión que ya conocemos por Visual Studio:

1 Private dpp As DomainProjectPicker 2 3 ''' <summary> 4 ''' connects to Team Foundation Server 5 ''' </summary> 6 Sub ConnectToTFS() 7 8 dpp = New DomainProjectPicker() 9 10 ' Server selection from Visual Studio clasic Window 11 If dpp.ShowDialog() = Windows.Forms.DialogResult.OK Then 12 Console.WriteLine("Connecting to server ...") 13 Console.WriteLine(" Name: {0}", dpp.SelectedServer().Name) 14 Console.WriteLine() 15 End If 16 17 End Sub

Listado de Team Projects

Una vez conectado, la siguiente rutina lista los Team Projects que hayamos seleccionado durante la selección del servidor Team Foundation Server 2008:

1 Private dpp As DomainProjectPicker 2 3 ''' <summary> 4 ''' Lists the selected team projects. 5 ''' </summary> 6 Sub ListSelectedTeamProjects() 7 8 ' validate 9 If dpp.SelectedServer Is Nothing Then Exit Sub 10 11 Console.WriteLine("Team Projects") 12 13 ' iterate trough tfs selected projects 14 For Each projectInfo As ProjectInfo In dpp.SelectedProjects() 15 Console.WriteLine(" Name: {0}", projectInfo.Name) 16 Console.WriteLine(" Status: {0}", projectInfo.Status) 17 Console.WriteLine() 18 Next 19 20 End Sub

Resultado

Como se puede apreciar el código es bastante simple, y ahora que ya está bien documentado el modelo de objetos, se pueden hacer cosas muy interesantes. Si juntamos todo el código en una misma rutina de consola y trabajamos con "mi server" obtendremos algo parecido a lo siguiente:

 

Connecting to server ... Name: ElServerDelBruno Team Projects Name: Demo Curso VSTS 01 Status: WellFormed Name: Demo MSF for CMMI Status: WellFormed Name: Learning VSTS Status: WellFormed Name: MSF Agile Demo Status: WellFormed

 

Pueden descargar el proyecto de ejemplo desde aqui: http://geeks.ms/files/folders/elbruno/entry87108.aspx o crear una aplicación de consola con este código completo:

Imports Microsoft.TeamFoundation.Proxy Imports Microsoft.TeamFoundation.Server Module Module1 Private dpp As DomainProjectPicker Sub Main() ' connects to Team Foundation Server ConnectToTFS() ' list Team Foundation Server Projects ListSelectedTeamProjects() ' wait for user input Console.ReadLine() End Sub ''' <summary> ''' connects to Team Foundation Server ''' </summary> Sub ConnectToTFS() dpp = New DomainProjectPicker() ' Server selection from Visual Studio clasic Window If dpp.ShowDialog() = Windows.Forms.DialogResult.OK Then Console.WriteLine("Connecting to server ...") Console.WriteLine(" Name: {0}", dpp.SelectedServer().Name) Console.WriteLine() End If End Sub ''' <summary> ''' Lists the selected team projects. ''' </summary> Sub ListSelectedTeamProjects() ' validate If dpp.SelectedServer Is Nothing Then Exit Sub Console.WriteLine("Team Projects") ' iterate trough tfs selected projects For Each projectInfo As ProjectInfo In dpp.SelectedProjects() Console.WriteLine(" Name: {0}", projectInfo.Name) Console.WriteLine(" Status: {0}", projectInfo.Status) Console.WriteLine() Next End Sub End Module

 

Saludos @ Home

El Bruno

 

Share this post :

Posted miércoles, 28 de mayo de 2008 22:08 by elbruno | 9 comment(s)

[TSWA] HowTo: cambiar la cantidad por defecto de WorkItems que se muestran en las busquedas o informes ?

Buenas,

cuando trabajas con tu Team System Web Access y accedes a Team Queries dentro del mismo, la cantidad de items que uno puede visualizar no tiene limite ya que la interfaz web se encarga de paginar los items que retorna la consulta.

Sin embargo, si desde una de estas consultas se necesita generar un informe de Crystal Reports o exportar los datos Excel (como muestra la siguiente imagen), solo verás una cantidad limitada de estos ítems ya que Team System Web Access define en su configuración la cantidad de elementos para modificar:

 

Si por algun motivo, es necesario cambiar este valor, dentro del archivo de configuración ubicado en el path de instalación de Team System Web Access, por ejemplo en "..\Program Files\Microsoft Visual Studio 2005 Team System Web Access\Web\web.config", el atributo count del elemento <maxWorkitemsInReportList> define la cantidad de elementos que pueden ser incluidos en un informe, por ejemplo para subir este valor a 500 items:

1 <?xml version="1.0" encoding="UTF-8"?> 2 <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 3 ... 4 <!-- Specifies maximum number of workitems when query results are being sent as an email or viewed as a report.--> 5 <maxWorkitemsInReportList count="500" /> 6 ... 7 </configuration>

 

Saludos @ Hell

El Bruno

 

Share this post :

Posted lunes, 26 de mayo de 2008 14:33 by elbruno | with no comments

[VSTS] GlobalBank; ejemplos de un dia a dia con VSTS

Buenas,

muchas veces mucha gente me pregunta por donde comenzar con Visual Studio Team System; esa pregunta es bastante complicada y no tiene respuesta fácil. De acuerdo lo <que entiendas> como Visual Studio Team System, tus espectativas pueden ser diferentes.

Nota: Es por eso que frente a afirmaciones como "el perro es el mejor amigo del hombre", yo respondo "¿el perro de quién? porque mi mejor amigo se llama Pablo".

Pero bueno, entre la gran cantidad de ejemplos, uno que puede servir para conocer toda la potencia de Visual Studio Team System es Global Bank: A Scenario for Visual Studio Team System 2008.

En los siguientes artículos se muestra cómo Global Bank utiliza Visual Studio Team System para ayudar a diseño e implementación de un nuevo servicio de banca online:

Saludos @ Home

El Bruno

 

Share this post :

Posted domingo, 25 de mayo de 2008 18:20 by elbruno | with no comments

[WS2008] How to enable Wireless, Windows Live Writer, etc on Windows Server 2008 ??

Buenas

después de un día de infierno, donde pocas cosas salieron bien; por fin puedo estrenar mi flamante Windows Server 2008 en mi portátil. Obviamente, que para un desarrollador enfrentarse a problemas como no tener activadas las conexiones Wireless o que no se puedan instalar herramientas de Windows Live, pueden ser un problema, pero por suerte con un poco de paciencia todo se soluciona.

Windows Live Writer

Por ejemplo, cuando quieres instalar alguno de las aplicaciones de Windows Live, como el Photo Gallery, Live Writer, etc. te encuentras con el siguiente desagradable mensaje:

--------------------------- Windows Live Installer --------------------------- Sorry, Windows Live programs cannot be installed on Windows Server, Windows XP Professional x64 Edition, or Windows operating systems earlier than Windows XP Service Pack 2. --------------------------- OK ---------------------------

Como trato de mantener mis experiencias posteadas una al día, no tener WLW es un problema. Sin embargo, gracias al excelente trabajo del equipo de desarrollo de Live, la solución es muy simple.

En pocas palabras ... WLW es una aplicacion .net, por lo que se puede copiar de algún lugar donde ya esté instalado y listo !!! despliegue de aplicaciones con XCOPY.

 

Wireless Networks

Este tema me hizo buscar un pocó más en la web. Obviamente que lo que mostraré a continuación es un clásico de principiantes, pero claro; frente a un nuevo SO, pasa lo que pasa.

Pues bien, frente a un Network and Sharing Center donde no hay acceso a las redes Wireless como muestra la siguiente imagen,

donde cuando selecciono la opción Connect to a Network solo veo las conexiones Dial-uP y VPN

me encontré agobiado. Por suerte, después de leer un poco sobre Windows Server 2008, me encontré que las características (features) del Sistema Operativo vienen desactivadas por defecto y que la capacidad para gestionar y conectarse a redes inalámbricas es una de ellas (cosa más que obvia en un server).

Asi que la solución, es abrir el Server Manager, seleccionar la opción Add Features y dentro del listado de Features seleccionar Wireless LAN Services.

Esta opción una vez instalada pide reiniciar el equipo, pero a partir de alli, ya podemos gestionar nuestras redes inalámbricas como en un Windows Vista clásico (lo que me recuerda el comentario de Antonio de tener que perder todo un fin de semana en tratar de dejar mi Windows Server 2008 lo más parecido a un Windows Vista)

 

Pues bien, después de un par de años vuelvo a trabajar con un Server como SO de base, a ver que tal la experiencia.

 

Saludos @ Home

El Bruno

 

Share this post :

Posted viernes, 23 de mayo de 2008 23:37 by elbruno | 2 comment(s)

Filed under:

[Off-Topic] Como crear un disco USB booteable ?

Buenas,

pequeño post de recuerdo ya que nunca me acuerdo los pasos para realizar esta tarea: la creación de un disco USB "booteable" desde el que, por ejemplo, se pueda instalar un sistema operativo.

Como estoy a punto de instalar Windows Server 2008 en mi portátil, ya que mi Windows Vista me abandonó después de casi 2 años, el post del amigo Kurt es el que me ha ayudado esta vez.

He aqui los pasos para crear el disco USB booteable:

  1. Desde una ventana de comandos ejecutar las siguientes acciones:
    1. diskpart
    2. list disk

      Esta opción se utiliza para ver cual es nuestro disco USB, en mi caso es el disco 1. Pero tened cuidado porque a partir del paso siguiente sobre este disco es sobre el que se trabaja y se lo formatea entre otras cosas.
    3. select disk 1
    4. clean
    5. create partition primary
    6. select partition 1
    7. active
    8. format fs=fat32
    9. assign
    10. exit
  2. A continuación debemos copiar el contenido del CD o DVD de instalación al flamante disco USB. Para esto utilizamos la misma ventana de comandos con el siguiente comando:
    1. xcopy d:\*.* /s/e/f e:\

      Donde D: es el CD o DVD y e:\ es la ruta de acceso al USB
  3. Listo ! Ahora simplemente debemos reiniciar y verificar que la opción para iniciar desde un dispositivo USB este activada.

Pues bien, con suerte mañana postearé desde un Windows Server 2008.

 

Saludos @ Home

El Bruno

 

Share this post :

Posted jueves, 22 de mayo de 2008 21:03 by elbruno | with no comments

Filed under:

[Evento] Materiales de la presentacion de Microsoft Robotics Developer Studio

Buenas,

como me gusta darme unas vueltas fuera de hora por las Universidades, las ideas, ganas y conocimientos que tienen los chicos en la universidad son impresionantes.

Después de una horita que se hizo muy corta donde hablamos de Microsoft Robotics Studio, de Robochamps y de algunas cosas muy chulas que se pueden hacer con un Lego, he subido los materiales del evento a Geeks.ms:

Y después de Robochamps ... a ver cuando coordinamos un evento de Robótica de un día completo en España !!!

 

Saludos @ ¿?

El Bruno

 

Share this post :