Un pequeño ejemplo sobre como enumerar las carpetas de servidor del gestor de fuentes de Team Foundation.
Los aspectos clave de este ejemplo:
Cómo establecer una conexión con el servidor TFS
Cómo solicitar un servicio, en este caso el servicio de gestión de versiones. Para conocer otros servicios existentes ver el documento ‘Team Foundation Server Object Model’ del SDK de Visual Studio 2005.
Cómo enumerar y filtar los elementos que se encuentrar en el gestor de fuentes.
Para compilar el código basta crear una aplicación de consola, pegar el código y establecer una referencia a los esamblados necesarios de Team System (Microsoft.TeamFoundation.Client.dll, Microsoft.TeamFoundation.Common, Microsoft.TeamFoundation.VersionControl.Common, Microsoft.TeamFoundation.VersionControl.Client) que tipicamente se encuentran en %ProgramFiles%Microsoft Visual Studio 8Common7IDEPrivateAssemblies
Aquí va el código:
using System;
using System.Globalization;
using System.IO;
using Microsoft.TeamFoundation;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
using Microsoft.TeamFoundation.VersionControl.Common;
namespace TFSProjFoldersEnum
{
class Program
{
static void Main(string[] args)
{
//Establecer la conexión son el servidor Team Foundation
TeamFoundationServer server = TeamFoundationServerFactory.GetServer(«http://localhost:8080«);
//Establecer la conexión servicio de control de versiones de servidor
VersionControlServer vcserver = (VersionControlServer)server.GetService(typeof(VersionControlServer));
//Obtenemos los items
//La función GetItems permite establecer:
//Desde que punto del arbol de fuentes queremos comenzar la enumeración ($/ es la raiz, podriamos establecer un directorio $/dir/dir1)
//Que versión deseamos
//Si queremos recursividad o no
//Si queremos que aparezcan los elementos que han sido eliminados
ItemSet itemSet = vcserver.GetItems(«$/», VersionSpec.Latest, RecursionType.Full, DeletedState.NonDeleted, ItemType.Folder);
for (int i = 0; i < itemSet.Items.Length; ++i)
{
//Simplmente mostramos el nombre pero la clase item tiene métodos y
//propiedades que permiten optener su tamaño, su tipo, descargarlos, etc…
Console.WriteLine(itemSet.Items[i].ServerItem, itemSet.Items[i]);
}
Console.ReadLine();
}
}
}