【问题标题】:Linqpad to query tfs2008...... Codesearching tfs2008 via linqpad is this possible?linqpad 查询tfs2008…… Codesearching tfs2008 via linqpad 这可能吗?
【发布时间】:2012-09-18 21:53:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: tfs linqpad


    【解决方案1】:

    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");
    

    【讨论】:

    • 所以,我现在尝试了您的解决方案,我在 SearchInFile 函数中收到一个错误,基本上说明我没有正确的 Item 参考......我相信它是 Microsoft.TeamFoundation.Framework .Client.dll。这是因为我对 tfs 2010 或 2012 没有任何想法? PS非常感谢您的回答。
    • 用 2008 年场景的更多细节更新了答案。如果您再遇到构建/链接错误,请告诉我。
    • 再次感谢您的更新,我仍然收到错误消息。 :找不到类型或命名空间名称“Item”(按 F4 添加 using 指令或程序集引用)我在 private void SearchInFile(Item file)
    • 嗯,该引用应在 Microsoft.TeamFoundation.VersionControl.Client.dll 中找到。你能确保你没有错过那个使用吗?
    • 我将那些列为附加引用而不是附加命名空间导入......我的错。非常感谢泰勒,你是一个活生生的救星。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多