2

我前段时间安装了 linqpad,最近我看到了一些关于如何使用它来查询 tfs 的文章。基本查询,如签入和结帐以及类似性质的事情。我在运行这些查询方面取得了很大的成功。然后我看到这个网站显示可以使用 linqpad 查询 tfs,基本上让您能够使用 linqpad 进行代码搜索。所以我花了很多时间试图让它发挥作用。

http://pascallaurin42.blogspot.com/2012/05/tfs-queries-searching-in-all-files-of.html

我必须说这家伙在利用 linqpad 查询 tfs 方面确实掌握得很好。我遇到的是,当我运行它时,我收到错误消息,指出我的 tfs 版本不允许团队分支......我真的在黑暗中射击,因为我不是 tfs 专家,但是这个如果我能让它为 tfs2008 工作,那就太棒了。无论如何,对此的任何帮助或想法都非常感谢....谢谢。

4

1 回答 1

2

TFS 2008 服务器不支持 versionControl.QueryRootBranchObjects() 方法,因为 TFS 2008 不理解 TFS 2010 中引入的“一流”分支的概念。但是,您仍然可以通过提供您的自己的分支列表。

例如,如果您将上面示例中的第 11-25 行替换为以下代码,它应该可以工作:

var teamBranches = new String[] { "$/project/Main", "$/project/Dev" };

filePatterns.Dump("File patterns");  
textPatterns.Dump("Text patterns");    

foreach (var teamBranch in teamBranches)   
    foreach (var filePattern in filePatterns)    
        foreach (var item in versionControl.GetItems(teamBranch + "/"     + filePattern, RecursionType.Full).Items)     

SearchInFile(item); 

显然,您需要将 $/project/main 和 $/project/dev 替换为您想要搜索的分支。

如果您有任何问题,请告诉我。

编辑

因为您使用的是 TFS 2008,所以还需要调整其他几行。而不是包括

Microsoft.TeamFoundation.Framework.Client

只包括

Microsoft.TeamFoundation.Client

而不是这一行:

var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://localhost:8088/tfs")); 

试试这个

// Note, 2008 servers don't use "/tfs" and I can't remember if they take a Uri
// or a string.
var tfs = new TeamFoundationServer("http://localhost:8080");
于 2012-09-17T21:06:02.247 回答