Linqpad查询tfs2008 ......通过linqpad进行Codesearching tfs2008这可能吗?

时间:2012-09-10 23:11:17

标签: tfs tfs2008 linqpad

我刚刚安装了linqpad,最近我遇到了一些关于如何使用它来查询tfs的文章。签入和签出等基本查询以及这种性质的东西。我在运行这些查询方面取得了很大的成功。然后我看到这个网站显示可以使用linqpad查询tfs,基本上可以让你使用linqpad进行代码搜索。所以我花了很多时间试图让它发挥作用。

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

我必须说这个人真的很好地利用linqpad来查询tfs。我遇到的是当我运行这个时,我得到错误,说明我的tfs版本不允许团队分支......我真的在黑暗中拍摄,因为我不是专家,但是这个如果我能让这个为tfs2008工作,那将是惊人的。无论如何,非常感谢任何帮助或想法....谢谢。

1 个答案:

答案 0 :(得分: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");