[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 :


Crossposting from ElBruno.com

[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 FilesMicrosoft Visual Studio 2008 SDKVisualStudioIntegrationCommonAssembliesMicrosoft.TeamFoundation.dll"
  • "..Program FilesMicrosoft Visual Studio 2008 SDKVisualStudioIntegrationCommonAssembliesMicrosoft.TeamFoundation.Client.dll"
  • "..Program FilesMicrosoft Visual Studio 2008 SDKVisualStudioIntegrationCommonAssembliesMicrosoft.TeamFoundation.Common.Library.dll"
  • "..Program FilesMicrosoft Visual Studio 2008 SDKVisualStudioIntegrationCommonAssembliesMicrosoft.TeamFoundation.WorkItemTracking.Client"
  • "..Program FilesMicrosoft Visual Studio 2008 SDKVisualStudioIntegrationCommonAssembliesMicrosoft.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 :


Crossposting from ElBruno.com

[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 FilesMicrosoft Visual Studio 2005 Team System Web AccessWebweb.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 :


Crossposting from ElBruno.com

[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 :


Crossposting from ElBruno.com

[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 :


Crossposting from ElBruno.com

[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 :


Crossposting from ElBruno.com

[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 :


Crossposting from ElBruno.com

[VS2008] Microsoft Visual Studio 2008 Setup: Error 1330.

Buenas,

hace unos días sin seguir los consejos del amigo Luis, comentí el error de instalar la versión Beta del Service Pack 1 de Microsoft Visual Studio 2008 en una máquina de desarrollo. Obviamente que los errores incluídos en la Beta del SP1, no iban a saltar a simple vista sino que cuando uno más los necesita.

Es por eso que desde hace horas y horas, estoy viendo una maraton de The Big Bang Theory limpiando mi Windows Vista y cuando llegó el momento clave de volver a instalar Microsoft Visual Studio 2008 y me encuentro con este error pienso que el día no puede ir peor de lo que está.

--------------------------- Microsoft Visual Studio 2008 Setup --------------------------- Error 1330. A file that is required cannot be installed because the cabinet file d:cab4.cab has an invalid digital signature. This may indicate that the cabinet file is corrupt. --------------------------- OK ---------------------------

 

Por suerte internet, y especialmente google live search nos proporciona toda la información que necesitamos para solventar este errror; que básicamente está dado por un problema con el tamaño de los archivos cabs de instalación.

Si bien me parece un poco extraño, la solución consiste en no instalar Microsoft Visual Studio 2008 desde un DVD o una imagen montada de un ISO, sino que copiar todo el contenido del instalador a un directorio local y lanzar el proceso de instalación desde este directorio.

Extraño o no, la solución funciona 😀 asi que a completar todo el resto de componentes que me faltan de instalar.

 

Saludos @ Home

El Bruno

 

Share this post :


Crossposting from ElBruno.com

[Off-Topic] Conflictos ? si, por favor

Buenas,

seguramente alguien alguna vez ha sentido la sensación de dar 2 pasos hacia adelante y 3 hacia atrás; esta sensación popularmente conocida para mi como <voy para atrás como los cangrejos> no es fácil de sobrellevar. Cuando constantemente te encuentras con diferentes obstáculos en tu vida profesional, es momento de tomar decisiones y actuar en base a las mismas.

Algunas personas, por lo general, frente a éstas situaciones deciden cambiar de entorno, de trabajo o simplemente alejarse; yo en los últimos años me he dado cuenta que cualquier escenario de conflicto es una oportunidad para aprender algo nuevo y para darme una ostia.

¿El Bruno a favor de los conflictos? pues sí. Pero claro, con algunas aclaraciones; cuando hablo de conflictos no me refiero a escenas al estilo Rocky y tampoco creo que vivir la vida como Hank Moody sea la solución (aunque Californication ya es de culto para mi)

Un conflicto de intereses bien tratado, puede ser algo tan simple y productivo como un grupo de personas exponiendo sus diferentes puntos de vista y definiendo una acción a partir de las mismas. Es necesario tener en claro, que todos los puntos de vista son válidos y que nadie tiene la respuesta final; pero tomándose un tiempo (pueden ser días o años) se llega a un camino viable.

Un libro que me ayudo a cambiar la perspectiva al respecto fué The Five Dysfunctions of a Team: A Leadership Fable; donde entre otras cosas se plantea un escenario muy interesante al respecto. Y es por eso, que en este momento, donde el conflicto al que me enfrento es mucho más grande de lo que estoy acostumbrado a manejar; donde mi primer impulso me indica que debo salir corriendo; me daré un tiempo prudencial (¿4 meses?) para ver si gestionando el problema como un <conflicto>, es posible llegar a una situación WIN / WIN.

 

Saludos @ Home

El Bruno

PD: Paralelamente seguiré organizando alguna charlita de Robotics, la de Software Factories después de preguntar sobre qué deberíamos hablar con ayudita de los chicos de Second Nug y alguna cosilla interesante surprise para junio con Luis, Jorge, Octavio, David y los chicos de Microsoft.

 

Share this post :


Crossposting from ElBruno.com

[EntLib] Enterprise Library 4 released !!!

 

Buenas

si bien estos últimos días han sido un poco complicados (tengo que admitir que esto de ser padre soltero es peor que un escenario con DCOM); una buena noticia me alegra el fin de semana: Enterprise Library 4 ha sido liberada.

Algo comenté de esta nueva versión y personalmente pienso que es algo así como EntLib 3.1 ++ SP1, pero trae algunas cosillas interesantes;

  • como son la integración con Microsoft Visual Studio 2008
  • la posibilidad de utilizar el Unity Application Block para la inyección de dependecias
  • un nuevo esquema de plugins para los CacheManagers; por fin !!!
  • mejoras en la performance del Logging Application Block, mucha gente se quejaba al respecto asi que hay que ver que es lo que nos proponen desde Microsoft Patterns and Practices
  • soluciones de bugs en general

Los que quieran comenzar a jugar con esta release yo se que en mi trabajo lo haremos el próximo lunes pueden descargarla desde http://msdn.microsoft.com/entlib; y si eres nuevo en el fabuloso mundo de Enteprise Library puedes comenzar con la introducción a Enterprise Library; o descargar y realizar los QuickStart.

 

Saludos @ Home

El Bruno

 

Share this post :


Crossposting from ElBruno.com