C# 使用C搜索TFS git存储库文件#

C# 使用C搜索TFS git存储库文件#,c#,git,tfs,C#,Git,Tfs,我试图让我的C#应用程序遍历所有TFS git项目,并在文件中搜索字符串模式。我是这样开始的 var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("https://tfs.domain.com/tfs")); tfs.EnsureAuthenticated(); var gitSvc = tfs.GetService<GitRepositoryService>(); var tf

我试图让我的C#应用程序遍历所有TFS git项目,并在文件中搜索字符串模式。我是这样开始的

 var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("https://tfs.domain.com/tfs"));
 tfs.EnsureAuthenticated();
 var gitSvc = tfs.GetService<GitRepositoryService>();
var tfs=tfstreamprojectcollectionfactory.GetTeamProjectCollection(新Uri(“https://tfs.domain.com/tfs"));
tfs.确保重新验证();
var gitSvc=tfs.GetService();
我没有找到一种方法来获取所有git项目的信息,从而使其通过foreach循环。我从中看到了一些代码,这些代码将从tfs.Getservice获取所有项目

 var tfs = TfsTeamProjectCollectionFactory
         .GetTeamProjectCollection(new Uri("http://{tfsserver}:8080/tfs"));

        tfs.EnsureAuthenticated();

        var versionControl = tfs.GetService<VersionControlServer>();


        StreamWriter outputFile = new StreamWriter(@"C:\Find.txt");
        var allProjs = versionControl.GetAllTeamProjects(true);
        foreach (var teamProj in allProjs)
        {
            foreach (var filePattern in filePatterns)
            {
                var items = versionControl.GetItems(teamProj.ServerItem + "/" + filePattern, RecursionType.Full).Items
                            .Where(i => !i.ServerItem.Contains("_ReSharper"));  //skipping resharper stuff
                foreach (var item in items)
                {
                    List<string> lines = SearchInFile(item);
                    if (lines.Count > 0)
                    {
                        outputFile.WriteLine("FILE:" + item.ServerItem);
                        outputFile.WriteLine(lines.Count.ToString() + " occurence(s) found.");
                        outputFile.WriteLine();
                    }
                    foreach (string line in lines)
                    {
                        outputFile.WriteLine(line);
                    }
                    if (lines.Count > 0)
                    {
                        outputFile.WriteLine();
                    }
                }
            }
            outputFile.Flush();
        }
    }
var tfs=tfstreamprojectcollectionfactory
.GetTeamProjectCollection(新Uri(“http://{tfsserver}:8080/tfs”);
tfs.确保重新验证();
var versionControl=tfs.GetService();
StreamWriter outputFile=新StreamWriter(@“C:\Find.txt”);
var allProjs=versionControl.GetAllTeamProjects(true);
foreach(所有项目中的var teamProj)
{
foreach(filePatterns中的var filePattern)
{
var items=versionControl.GetItems(teamProj.ServerItem+“/”+filePattern,RecursionType.Full)。items
.Where(i=>!i.ServerItem.Contains(“\u ReSharper”);//跳过ReSharper内容
foreach(项目中的var项目)
{
列表行=搜索填充(项目);
如果(lines.Count>0)
{
outputFile.WriteLine(“文件:+item.ServerItem”);
outputFile.WriteLine(lines.Count.ToString()+“找到了个事件”);
outputFile.WriteLine();
}
foreach(行中的字符串行)
{
outputFile.WriteLine(行);
}
如果(lines.Count>0)
{
outputFile.WriteLine();
}
}
}
outputFile.Flush();
}
}

我如何做类似于上面代码的事情,但是通过使用Team Foundation Git库?

有一个PowerShell示例来获取Git项目,您可以尝试将其转换为C代码。参考此线程:


如果您使用的是TFS 2017,建议您使用。有关更多信息,请参阅。

您使用的是什么版本的TFS?TFS 2017支持代码搜索。只需克隆存储库(使用命令行或LibGit2Sharp库)并搜索文件(查看磁盘上的内容或再次使用LibGit2Sharp)可能会更高效。