2009-01-22 8 views
10

Me pregunto si hay una manera para mí de listar todos los 'archivos' incluidos en un proyecto del equipo tfs. Lo que pretendo hacer es buscar archivos de un nombre particular que no tengan rutas fijas dentro de TFS causadas por la bifurcación ($/MyTeamProject/Main/Build/instruction.xml y $/MyTeamProject/Branches/Release_1.0). Una vez que se encuentre un archivo, me gustaría manipularlo.¿Cómo enumerar los archivos de un proyecto de equipo usando tfs api?

Supongo que estamos hablando de elementos cuando se trata de entidades incluidas en un proyecto de equipo y no archivos tradicionales y, por lo tanto, esto puede ser un poco complicado?

He visto algunas muestras para manipular un archivo, pero todas las muestras hasta ahora tienen rutas fijas.

Respuesta

8

Aquí es cómo he descubierto la manera de una lista de todos los archivos de un proyecto de TFS:

Añadir Microsoft.TeamFoundation.Client y Microsoft.TeamFoundation.VersionControl.Client como una referencia a su proyecto.

Añadir un uso para Microsoft.TeamFoundation.Client y Microsoft.TeamFoundation.VersionControl.Client

TeamFoundationServer server = new TeamFoundationServer("server"); 
VersionControlServer version = server.GetService(typeof(VersionControlServer)) as VersionControlServer; 

ItemSet items = version.GetItems(@"$\ProjectName", RecursionType.Full); 
ItemSet items = version.GetItems(@"$\ProjectName\FileName.cs", RecursionType.Full); 

foreach (Item item in items.Items) 
{ 
    System.Console.WriteLine(item.ServerItem); 
} 

El segundo GetItems restringirán los elementos encontrados a las de un nombre de archivo específico. Solo tengo este ejemplo que muestra la ruta del servidor para todos los archivos encontrados.

16

Esta no es una respuesta diferente, sino simplemente una actualización del código de Vengafoo. La clase TeamFoundationServer está obsoleta en 2011 (no estoy seguro de cuándo sucedió esto, solo sé que está obsoleta a partir de ahora). El código de Vengafoo es de 2009, así que tiene sentido. Utilice la clase TfsTeamProjectCollection con la clase de fábrica TfsTeamProjectCollectionFactory.

Aquí está la actualización, sólo una línea de cambio:

//TeamFoundationServer server = new TeamFoundationServer("server"); 
TfsTeamProjectCollection server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfsServerURI:8080/tfs/")); 

VersionControlServer version = server.GetService(typeof(VersionControlServer)) as VersionControlServer; 

ItemSet items = version.GetItems(@"$\ProjectName", RecursionType.Full); 
//ItemSet items = version.GetItems(@"$\ProjectName\FileName.cs", RecursionType.Full); 

foreach (Item item in items.Items) 
{ 
    System.Console.WriteLine(item.ServerItem); 
} 
+1

version.GetItems (@ "$ \ ProjectName", RecursionType.Full) Esto también funciona: version.GetItems (@ "$/Nombre del Proyecto ", RecursionType.Full) --- por lo que funciona barra oblicua o barra invertida –

Cuestiones relacionadas