我刚刚安装了linqpad,最近我遇到了一些关于如何使用它来查询tfs的文章。签入和签出等基本查询以及这种性质的东西。我在运行这些查询方面取得了很大的成功。然后我看到这个网站显示可以使用linqpad查询tfs,基本上可以让你使用linqpad进行代码搜索。所以我花了很多时间试图让它发挥作用。
http://pascallaurin42.blogspot.com/2012/05/tfs-queries-searching-in-all-files-of.html
我必须说这个人真的很好地利用linqpad来查询tfs。我遇到的是当我运行这个时,我得到错误,说明我的tfs版本不允许团队分支......我真的在黑暗中拍摄,因为我不是专家,但是这个如果我能让这个为tfs2008工作,那将是惊人的。无论如何,非常感谢任何帮助或想法....谢谢。
答案 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");