2009-01-22 13 views
10

Bir tfs takım projesinde bulunan tüm 'dosyaları' listelemenin bir yolu olup olmadığını merak ediyorum. Yapmayı amaçladığım, TFS içinde dallanma nedeniyle oluşan sabit yollara sahip olmayan belirli bir isimde dosyaları aramaktır ($/MyTeamProject/Main/Build/instruction.xml ve $/MyTeamProject/Branches/Release_1.0). Bir dosya bulununca, onu değiştirmek istiyorum.TFS API kullanarak bir takım projesinin dosyaları nasıl listelenir?

Geleneksel bir dosya değil, bir ekip projesinde yer alan varlıklar söz konusu olduğunda öğeleri konuşuyoruz ve bu yüzden biraz zor olabilir?

Bir dosyayı işlemek için bazı örnekler gördüm, ancak şu ana kadar tüm örnekler sabit yollara sahip. İşte

cevap

8

Bir TFS Projesi tüm dosyaları listelemek nasıl düşündüm nasıl:

projenize referans olarak Microsoft.TeamFoundation.Client ve Microsoft.TeamFoundation.VersionControl.Client ekleyin.

Microsoft.TeamFoundation.Client ve 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); 
} 

ikinci GetItems belirli dosya adının olanlara bulunan öğeleri sınırlar için bir kullanma ekleyin. Bulunan tüm dosyalar için sunucu yolunu çıkaran bu örnek var.

16

Bu, farklı bir yanıt değil, sadece Vengafoo'nun kodunun yükseltilmesidir. TeamFoundationServer sınıfı 2011'de geçerliliğini yitirdi (bunun ne zaman gerçekleştiğinden emin değilim, artık bunun artık eskimiş olduğunu biliyorum). Vengafoo'nun kodu 2009'dan geliyor, bu yüzden mantıklı. Bunun yerine TfsTeamProjectCollection sınıfını TfsTeamProjectCollectionFactory fabrika sınıfıyla birlikte kullanın. İşte

yükseltme, değişimin sadece bir çizgidir:

//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 (@ "$ \ ProjeAdı", RecursionType.Full) Bu aynı zamanda çalışır: version.GetItems (@ "$/projectname ", RecursionType.Full) --- bölü ya da ters eğik çizgi çalışır –

İlgili konular