2011-03-22 74 views
0

我想从TFS获取文件的名称。我以递归方式从一个位置获取所有文件,然后遍历这些文件以查找特定文件。看来VersionControl.Client.Item对象不公开文件名(或文件夹名)。如何获取项目的文件名? - 团队基础SDK

tfs.EnsureAuthenticated(); 
VersionControlServer vcs = versionControlServer)tfs.GetService(typeof(VersionControlServer)); 
var allStaticFiles = vcs.GetItems(path + "*", RecursionType.Full).Items; 
foreach (var staticFile in allStaticFiles) 
{ 
    if(staticFile == ?? // need the filename) 
    { 
    } 
+0

TFS 2005/2008或2010? (默认情况下,2010在“插槽模式”下工作,早期版本没有。) – Richard 2011-03-22 16:40:25

回答

2

(假设TFS2008。)

类型的vcs.GetItems(...).ItemsItem[]。因此staticFileItem实例。

Item的属性都是服务器端,因为路径的详细信息将取决于客户端的工作空间映射(可能有多个工作空间,包括同一台计算机上的同一个用户的这个项目)。

您可以使用Item.ServerItem获得的文件名(取最后的路径元素)

到路径,得到了Workspace实例代表当前的工作空间,并使用它的方法到ServerItem映射到本地路径(有一些行为细微差别,没有更多的上下文,不清楚哪一个是正确的)。

+1

这也是TFS2010中的解决方案。 – Slater 2011-03-22 17:14:23