[TFS] Info: Existe una discrepancia entre el control de código fuente de la Solución y los archivos de Proyecto.

Buenas,

si migras código desde VSS a TFS, o cambias la asociación de algún proyecto entre servidores Team Foundation Server 2008, es muy probable que te encuentres con el siguiente error:

There appears to be a discrepancy between the solution's source control information about some project(s) and the information in the project file(s).

Este error por lo general viene dado por errores en la configuración de uno o más proyectos dentro de una solución.

La solución consiste en desde el menu File // Source Control // Change Source Control realizar un UnBind y luego un Bind del proyecto al servidor correspondiente. Sin embargo, cuando esta solución no surge efecto tenemos acceso al plan B.

Aclaración: el plan B no está soportado oficialmente por la gente de Seattle, pero si a alguien lo saca de un apuro considérese en deuda conmigo, una deuda barata, sólo una caña.

Estos son los pasos para eliminar la información manualmente:

1. Editar el proyecto, para esto desplegar el menú contextual y seleccionar la opcion Edit Project File. (para esto son necesarias las Power Commands de Visual Studio 2008, nos permiten ahorrarnos un click)

 

2. Revisar si dentro del archivo de proyecto los valores de los nodos <SccProjectName>, <SccLocalPath>, <SccAuxPath> y <SccProvider>. Por ejemplo, en el siguiente archivo de proyecto, el mismo ha arrastrado un poco de información basura desde Source Safe:

1 <?xml version="1.0" encoding="utf-8"?> 2 <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 <PropertyGroup> 4 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 5 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 6 <ProductVersion>9.0.30729</ProductVersion> 7 <SchemaVersion>2.0</SchemaVersion> 8 <ProjectGuid>{138F05E7-0B40-4607-A668-7EFE1573E3FB}</ProjectGuid> 9 <OutputType>Library</OutputType> 10 <AppDesignerFolder>Properties</AppDesignerFolder> 11 <RootNamespace>TfsBuildEventProcessor</RootNamespace> 12 <AssemblyName>TfsBuildEventProcessor</AssemblyName> 13 <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> 14 <FileAlignment>512</FileAlignment> 15 <SccProjectName>%24/Root/Services/MyService</SccProjectName> 16 <SccLocalPath>..</SccLocalPath> 17 <SccAuxPath>http://TFSRTM08:8080</SccAuxPath> 18 <SccProvider>{4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}</SccProvider> 19 </PropertyGroup> 20 ... 21 </Project>

3. En este punto existen 2 alternativas para solucionar el problema, cambiar el valor de los los nodos <SccProjectName>, <SccLocalPath>, <SccAuxPath> y <SccProvider> por SAK; o eliminar los mismos; y nuevamente realizar una tarea de UnBind y Bind.

 

4. Una vez reconectado el proyecto nuevamente al Source Control correspondiente, la definición del proyecto debe quedar como el siguiente ejemplo:

1 <?xml version="1.0" encoding="utf-8"?> 2 <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 <PropertyGroup> 4 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 5 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 6 <ProductVersion>9.0.30729</ProductVersion> 7 <SchemaVersion>2.0</SchemaVersion> 8 <ProjectGuid>{138F05E7-0B40-4607-A668-7EFE1573E3FB}</ProjectGuid> 9 <OutputType>Library</OutputType> 10 <AppDesignerFolder>Properties</AppDesignerFolder> 11 <RootNamespace>TfsBuildEventProcessor</RootNamespace> 12 <AssemblyName>TfsBuildEventProcessor</AssemblyName> 13 <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> 14 <FileAlignment>512</FileAlignment> 15 <SccProjectName>SAK</SccProjectName> 16 <SccLocalPath>SAK</SccLocalPath> 17 <SccAuxPath>SAK</SccAuxPath> 18 <SccProvider>SAK</SccProvider> 19 </PropertyGroup> 20 ... 21 </Project>

 

 

 

Saludos @ Home

El Bruno

Crossposting from ElBruno.com

[TFS] TFS Build Missile Launcher (1ra Parte, interceptando eventos en TFS)

Buenas,

después de unos meses en los que he abandonado algunos de mis hobbies, estuve pensando en como aprovechar los mismos en mi trabajo diario y llegué a la conclusión de que necesitaba un

Lanzador de misiles inalámbrico USB disparado por eventos de un servidor Team Foundation Server 2008.

Estar al tanto del resultado de las compilaciones en un servidor TFS es imprescindible para asegurar la calidad del código. Esta información puede llegarnos por varios medios, usualmente por mail; pero mucha gente pasa de esta información por lo que hay que tener otra alternativa para estos casos.

Es por eso que tuve una pequeña idea y he aquí un pequeño diagrama de la misma:

 

  1. Supongamos que Darren (un desarrollador) realiza un CheckIn de código con errores.
  2. La configuración dispara un proceso de Build, en el servidor de compilación.
  3. El Build no puede compilar el código, por lo que se marca como Failed.
  4. Se dispara un evento con el resultado de este Build.
  5. Uno de los subscriptores de los eventos, determina que para este tipo de Build y para el estado Failed, debe informar al servicio de Lanza Misiles de la persona que disparó este Build (Darren)
  6. El servicio de lanzamisiles, obtiene de su configuración la ubicación de Darren y procede a lanzarle un misil.
  7. Darren aprender la lección y verifica el código antes de subirlo.

Muchas personas piensan que un buen equipo de desarrollo funciona en base a la motivación y al respeto. Yo comparto estos pensamientos, pero una vez que patente el TFSBuild Missile Launcher, les propongo utilizarlo y me comentan sus resultados.

Suscripción a eventos de TFS

Volvamos un poco a la tecnología, que es lo trato de escribir mayormente en este blog, y lo primero con lo que tuve que lidiar fue con la suscripción a los eventos de Team Foundation Server 2008.

El sistema de eventos de TFS es un sistema bastante extensible ya que permite varios canales de suscripción y uno de ellos puede ser SOAP, con lo que la suscripción a los eventos se torna en un simple proyecto WCF.

Para esta tarea me basé principalmente en este artículo donde explican paso a paso como crear un proyecto WCF para interpretar eventos TFS. Una vez creado un nuevo proyecto VB.Net de WCF, al que he llamado TfsEventListenerService, lo siguiente ha sido renombrar la interfaz que define los contratos de mi servicio por ITfsEventSuscriber y la clase que los implementa TfsEventSuscriber.

El código de la interfaz y de la clase ha quedado muy simple:

1 ''' <summary> 2 ''' Interface to interact with Team Foundation Server event notificacion service 3 ''' </summary> 4 <ServiceContract(Namespace:="http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03")> _ 5 Public Interface ITfsEventSubscriber 6 7 ''' <summary> 8 ''' Notifies the specified event XML. 9 ''' </summary> 10 ''' <param name="eventXml">The event XML.</param> 11 ''' <param name="tfsIdentityXml">The TFS identity XML.</param> 12 <OperationContract(Action:="http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03/Notify")> _ 13 Sub Notify(ByVal eventXml As String, ByVal tfsIdentityXml As String) 14 15 End Interface 16 17 ''' <summary> 18 ''' Implements a custom event listener for Team Foundation Server events 19 ''' </summary> 20 Public Class TfsEventSubscriber 21 Implements ITfsEventSubscriber 22 23 ''' <summary> 24 ''' Notifies the specified event XML. 25 ''' </summary> 26 ''' <param name="eventXml">The event XML.</param> 27 ''' <param name="tfsIdentityXml">The TFS identity XML.</param> 28 Public Sub Notify(ByVal eventXml As String, ByVal tfsIdentityXml As String) Implements ITfsEventSubscriber.Notify 29 30 ' send information to debug window 31 Dim infoIdentity As String = String.Format("TFS Identity: {0}", tfsIdentityXml) 32 Dim infoEvent As String = String.Format("Event Xml: {0}", eventXml) 33 34 Debug.Print(infoIdentity) 35 Debug.Print(infoEvent) 36 37 ' process tfs event 38 'TfsBuildEventProcessor.BuildEvent.ProcessEvent(eventXml) 39 40 End Sub 41 42 End Class 43

Nota: Es importante remarcar las líneas 37 y 38 que es donde se realiza la interfaz de llamada al proyecto que evalúa el resultado de los builds recibidos por este canal.

Para suscribir este servicio, existe la opción más conocida que es utilizar la herramienta de línea de comandos BISSuscribe, pero en mi caso y como soy un poco más práctico, me he aprovechado de las ventajas del último Service Pack para Microsoft Visual Studio 2008 y he creado la suscripción con los siguientes pasos:

1. En el panel Team Explorer, selecciono la opción Alerts del Team Project sobre el que quiero trabajar.

2. En el formulario Alerts Editor, selecciono New y en el tipo de alerta selecciono Build Alerts

3. En la definición de la nueva alerta defino

 

De esta manera, nuestro servidor TFS informará con un formato SOAP a la url definida cada vez que se realice un build para el proyecto Calculator Build.

Interpretando la información de los Builds de TFS

Una vez creado un servicio WCF que recibirá las notificaciones del servidor TFS, lo siguiente que necesitaba era crear un pequeño intérprete que me permita evaluar el contenido de un build para tomar acciones sobre el mismo. Para esto, cree un nuevo proyecto de librería de clases en C# y dentro del mismo, sobre un XML de un build cree el siguiente schema con su clase asociada. Este es el Xsd con el que interpreto el resultado de los builds.

Adicionalmente en una clase llamada BuildEvent, he creado una función que permite evaluar el resultado de un build.

1 namespace TfsBuildEventProcessor 2 { 3 public class BuildEvent 4 { 5 const string Status_Failed = "Failed"; 6 const string Status_Successfully_Completed = "Successfully Completed"; 7 const string Status_Partially_Succeeded = "Partially Succeeded"; 8 9 /// <summary> 10 /// Processes the event. 11 /// </summary> 12 /// <param name="eventXml">The event XML.</param> 13 public static bool ProcessEvent(string eventXml) 14 { 15 // load xml and deserialize 16 XmlDocument doc = new XmlDocument(); 17 doc.LoadXml(eventXml); 18 BuildCompletionEvent2 bce =(BuildCompletionEvent2) XMLHelper.Deserialize(doc, typeof(BuildCompletionEvent2)); 19 20 // define build status 21 if (bce.CompilationStatus == Status_Successfully_Completed) 22 { 23 // Build sucess, don't do anything 24 Debug.WriteLine("Build Successfully Completed"); 25 } 26 else if (bce.CompilationStatus == Status_Partially_Succeeded) 27 { 28 // Build partially succeeded, don't do anything or maybe yes 😀 29 Debug.WriteLine("Build Partially Succeeded"); 30 } 31 else if (bce.CompilationStatus == Status_Failed) 32 { 33 // build failed, find requested by 34 Debug.WriteLine("Build Failed, requested by: {0}", bce.RequestedBy); 35 36 // FIRE TO DEVELOPER !!! 37 } 38 39 // return process result 40 return true; 41 } 42 } 43 }

El código es bastante straighfoward, pero vale la pena remarcar que una vez serializado a un objeto el XML con el resultado del build (línea 16), a continuación realizo una serie de validaciones para conocer el estado del mismo y tomar la acción correspondiente (líneas 21 hasta 35).

Este proyecto es el que servirá de enlace con el lanza misiles USB para indicar que es necesario lanzar un misil a una persona en concreto.

Lansa Misiles Inalámbrico

Hace unos días me llegó por correo, uno de los últimos juguetes al que le tenía ganas desde hace tiempo. Se trata de un lanza misiles inalámbrico USB.

A nivel software el mismo no instala ningún driver, ya que Windows lo reconoce como un dispositivo Human Device Interface (HDI), pero si instala una única aplicación que nos permite controlar el lanza misiles: WirelessLauncher.exe

Esta aplicación nos permite direccionar los misiles utilizando 4 ejes, disparar los mismos, y resetear la posición del lanza misiles a un setup inicial.

La única queja que tengo con la aplicación es que muchas veces no se cierra correctamente y queda una instancia en ejecución. Esto ocasiona que si abrimos nuevas instancias de la aplicación, la misma no puede conectar con el HDI ya que lo “tiene tomado” la instancia que no se ha cerrado correctamente.

 

Conclusión y próximos pasos

En este primer post quería comentar además de la idea general del TFS Build Missile Launcher, las excelentes oportunidades que poseemos para suscribirnos y trabajar con eventos de Team Foundation Server; y un poco sobre la pieza de hardware con la que integraremos el servicio de Builds.

En la 2da parte, comentaré cómo trabajar con este HDI, y como ensamblar todas las partes para lograr tener todo el diagrama en funcionamiento, además de todo el código fuente y un vídeo de ejemplo.

 

Saludos @ Home

El Bruno

 

Referencias

Crossposting from ElBruno.com

[Evento] El Guille también pasa por Madrid

Guille Community Tour 2008 - Vista preliminarBuenas,

pues si, no nos ibámos a quedar afuera de la gira del Guille, y el próximo 2 de Octubre lo podrás ver en las oficinas de Microsoft hablando un poco de lo que más sabe.

Puedes encontrar más informacion en http://madriddotnet.spaces.live.com/blog/cns!6453107D41F04C68!159.entry

 

Saludos @ Home

El Bruno

Crossposting from ElBruno.com

[VS] Xml –> Xsd –> Clase en C# (para mentes simples como la mia …)

Buenas,

los que me conocen saben que una de mis grandes habilidades es la de no tener memoria, en este sentido soy casi como un cactus (si alguno conoce un cactus con memoria le invito una pizza).

Es por eso que cada tanto posteo cosillas que siempre se me olvidan como por ejemplo esta:

¿Cómo creo una clase que me permita trabajar con un archivo xml a partir del mismo?

Ya sé que es una pregunta un tanto borrica, pero tuve que recurrir a la ayuda de mi amigo Javi (aka PYC), para recordarlo y he aquí los pasos:

1. Tenemos un archivo SampleXml.xml con el siguiente contenido

<?xml version="1.0" encoding="utf-8"?> <Cliente> <Nombre>Jose</Nombre> <EMail>jose@elbruno.com</EMail> <Edad>32</Edad> </Cliente>

2. Para crear un xsd a partir del mismo tenemos 2 opciones, lo editamos en Visual Studio y seleccionamos la opción del menu Xml // Create Schema

 

o desde la linea de comandos utilizamos la herramienta Xsd.

C:Program FilesMicrosoft Visual Studio 9.0VC>xsd "c:Tempsamplexml.xml" /out:c:temp

3. El Xsd resultante es similar al siguiente

<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Cliente"> <xs:complexType> <xs:sequence> <xs:element name="Nombre" type="xs:string" /> <xs:element name="EMail" type="xs:string" /> <xs:element name="Edad" type="xs:unsignedByte" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

4. Para crear luego una clase que nos permita trabajar con el xml inicial, desde la línea de comandos ejecutaremos la siguiente opción

C:Program FilesMicrosoft Visual Studio 9.0VC>xsd "c:Tempsamplexml.xsd" /out:c:temp /classes

Esta opcion “/classes” permite generar clases tanto C# como VB.Net.

5. Finalmente, podemos agregar los archivos generados a un proyecto y trabajar con el mismo utilizando las clases que hemos creado. Por ejemplo:

static void Main(string[] args) { // cargamos un xml a partir de un fichero XmlDocument document = new XmlDocument(); document.Load(@"C:TempSampleXml.xml"); // creamos el objeto correspondiente Cliente cliente = (Cliente)Deserialize(document, typeof(Cliente)); // mostramos parte de la informacion del xml Console.WriteLine("Nombre: {0}", cliente.Nombre); Console.WriteLine("Edad: {0}", cliente.Edad); Console.WriteLine("EMail: {0}", cliente.EMail); Console.ReadKey(); }

Es posible descargar el proyecto de ejemplo desde http://geeks.ms/files/folders/elbruno/entry101271.aspx (gracias Geeks.ms)

 

Saludos @ Here

El Bruno

Crossposting from ElBruno.com

[VSTS] Team System y los proyectos de Sharepoint

Buenas,

una de las preguntas que casi siempre se leen en los foros de Team System o que recibimos en los eventos, está relacionada con la gestión de los proyectos de desarrollo Sharepoint/MOSS con Visual Studio Team System.

En este punto hago un ejercicio de humildad, ya que mucho al conocer muy poquito sobre MOSS 2007 no puedo opinar mucho al respecto.

Sin embargo, acabo de dedicarle unos minutos de lectura al siguiente artículo y me ha dejado las cosas un poco más claras:

Using Team Foundation Server to Develop Custom SharePoint Products and Technologies Applications

Obviamente, hasta que no tenga una buena referencia (un caso real) o una experiencia propia, me guardaré mi opinión; pero mientras ¿tu que opinas sobre MOSS / VSTS?

 

Saludos @ Home

El Bruno

Crossposting from ElBruno.com

[VSTS] Aclarando dudas sobre Rosario (aunque el que aclara es otro …)

Buenas,

si bien el amigo Luis me ha tentado para desvelar la última frikada que estoy haciendo; he logrado contenerme mientras sigo averiguando cual es la cadena correcta de bytes para disparar el HID y mejor trato de resumir un post MUY INTERESANTE de Brian Harry sobre algunos detalles de Rosario (la nueva versión de Visual Studio Team System)

En primer lugar, nobleza obliga y a leer el post completo aquí, y ahora un resumen de lo que más me ha llamado la atención:

  • Sistemas Operativos
    Rosario soportará Windows Server 2003, Windows Server 2008 y el futuros sistemas operativos de Windows Server. Se planteó la posibilidad de no incluir WS2003, pero después el sentido común llamó a la puerta de los chicos de Redmond y tomaron la decisión correcta.
  • 64-bit
    Rosario soportará servidores 64 bits. 😀
  • Virtualización
    Si bien siguen las pruebas la recomendación seguirá siendo que se ejecuta el SQL Server en un server nativo/host OS pero que otros componentes TFS se pueden ejecutar en un entorno Virtualizado.
  • SQL Server
    Punto muy importante: en Rosario no se puede utilizar SQL Server 2005, sólo se admite SQL Server 2008. Era una decisión controvertida, pero es una decisión final.  El principal motivo es Reporting Services 2008 que es muchoooo mejor que en versiones anteriores. Existen otras razones mejoras en la indexación, en la compresión de índices, etc.
  • SharePoint
    Rosario no soportará SharePoint 2.0, se requiere como mínimo SharePoint 3.0 (2007) para los portales de proyecto. 
  • Project Server
    Rosario incluye la integración con Project Server, pero no es necesario instalar y trabajar con el mismo.
  • Servidores de Compilación
    La versión de servidor de compilación de TFS debe coincidir con la versión del servidor TFS.  Es por esto que se debe actualizar todos los servidores de compilación de TFS al mismo tiempo que el servidor de TFS al que están asociados. 
  • Versiones de Cliente
    Una de las grandes preocupaciones que existen es la compatibilidad con versiones anteriores de Visual Studio, y debido a los grandes cambios que se incluyen en Rosario, este punto es muy delicado, porque mantener una compatibilidad 100% entre versiones anteriores es imposible.  El plan propuesto es crear actualizaciones (parches, SP, etc.) para las versiones anteriores (Team Explorer 2005, Team Explorer 2008 y el proveedor de MSSCCI) que permitirles conectarse e interactuar eficazmente con un servidor de TFS Rosario.  Por otra parte el cliente Rosario funcionará bien con un servidor TFS 2005 o TFS 2008.
  • Oficina
    Rosario soportará Office 2007 o posterior.  Esto significa que nos se se quitando soporte para clientes de Office 2003. 

Brian deja muchos más detalles en su post original, por lo que recomiendo leerlo detenidamente.

 

Saludos @ Home

El Bruno

Crossposting from ElBruno.com

[VS2008] Ejemplo de Text To Speach en 8 líneas

Buenas,

hoy me preguntaron si tenía algún ejemplo simple de utilización de las tecnologías de TextToSpeech incluidas en Vista o WS2008. Hace un tiempo hablé un poco de esto en una charla en Córdoba, pero si de memoria tengo que escribir algo, me sale lo siguiente (basado en SpeechSynthesizer):

1 using System; 2 using System.Speech.Synthesis; 3 4 namespace tts1 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 SpeechSynthesizer ttsSynth = new SpeechSynthesizer(); 11 ttsSynth.SelectVoice("Microsoft Anna"); 12 string line = "Hi ... my name is Valentino"; 13 while (line.Length > 0) 14 { 15 ttsSynth.Speak(line); 16 line = Console.ReadLine(); 17 } 18 } 19 } 20 }

Proyecto de consola, con referencias a System.Speech, F5 y listo !!!

 

Saludos @ Here

El Bruno

PD: si lo que queremos es reconocer la voz … hace más tiempo aún escribí algo al respecto System.Speech, Hello World pero al reves

Crossposting from ElBruno.com

[Evento] Recursos del evento de ALM (recursos parciales, como las clases …)

Buenas,

en primer lugar quiero agradecer a Fernando por invitarme a dar una charla virtual en Live Meeting como parte del programa Student to Business. En los siempre escasos 120 minutos del evento traté de dar un repaso por algunas de las capacidades mínimas de Visual Studio Team System, desde el punto de vista de varios perfiles en un “mini proyecto” de ejemplo.

Si bien 2da parte es el próximo sábado, y después de ese evento subiré el código y la presentación; Fernando me pidió si podía publicar algunos de los recursos con los que trabajé para que sirvan de referencia a la gente que quiera comenzar a probarlos. Asi que aquí están:

Herramientas

Máquinas Virtuales y service packs

Herramientas de desarrollo y Frameworks de referencia

 

Saludos @ Here

El Bruno

Crossposting from ElBruno.com

[TFS2008] HowTo: Excluir directorios específicos en nuestros proyectos MSBuild

Buenas,

ayer en la charla de Jesus sobre gestión de código fuente después de que le reventará su portátil con un bluetooth de procedencia dudosa, se trataron bastantes temas interesantes y sobre los cuales, creo que no hay una respuesta correcta para los mismos. Uno de ellos era el dichoso

¿Cuál es la mejor organización que puedo darle a mis directorios dentro del Source Control?

El amigo Jesus propuso lo que se describe en la guía de desarrollo de Visual Studio Team System, y nuestro amigo Luis aka el 2do follonero le dijo que tal vez ese modelo no es muy óptimo para las compilaciones automáticas.

El esquema de directorios era parecido al de la siguiente imagen, donde podemos ver varias soluciones que se corresponden con diferentes directorios, donde estan los proyectos de las mismas:

y la cuestión radicaba en que para compilar una solución, por ejemplo la solución web: WebApp, era necesario incluir un WorkingFolder apuntando a $/SampleDemo/Main/Src y esto suponía descargar además del directorio Web, descargar los directorios Win y WinService (esto supone más tiempo en un build y eso no es recomendable)

Esto se puede realizar jugando un poquito con la configuración del build, y por suerte en Team Foundation Server 2008 se ha incluido dentro del asistente. En el paso de definición de Workspaces, podemos definir que en los directorios Win y WinService no se descargue el contenido de los mismos, definiéndolos como Cloaked.

La siguiente imagen muestra un ejemplo de la configuración de este build

 

Asi que bien, si hay directorios que molestan a la hora de definir un Build, tal vez la opción Cloaked sea de ayuda 😀

 

Saludos @ Here

El Bruno

Crossposting from ElBruno.com

[TFS2008] Nuevo release de TFS Migration Toolkit (migrando sin el WiiMote)

Buenas,

si bien cada tanto comentó alguna novedad de algún producto, hoy no diré nada sobre la nueva versión de XNA Game Studio 3.0, ni sobre la nueva versión del Open XML Format SDK 2.0; pero si me gustaría hablar sobre el nuevo TFS Migration Toolkit y sobre su “hijo” la TFS to TFS Migration Tool.

En primer lugar comentar que se solucionan algunos bugs y se incluyen, entre otras, las siguientes novedades:

  • nuevos índices en las bases de datos de migración para mejorar la performance
  • soporte para la migración de elementos de VC y WI entre servidores TFS de diferentes versiones
  • warnings frente a problemas de sincronización (por ejemplo la no utilización de la cuenta de servicio)
  • nuevas opciones de configuración, como por ejemplo setear el intervalo de tiempo de refresco entre sesiones

Y, los que hemos utilizado alguna vez esta herramienta, sabemos que si bien tiene sus limitaciones estas novedades y la solución de los bugs son bienvenidas.

 

Saludos @ Here

El Bruno

Crossposting from ElBruno.com