如何获取TFS本地工作区中的项目计数?

Kar*_*EDV 8 version-control powershell tfs visual-studio-2013 tfs2013

当我打开我的Visual Studio并从我们的TFS获得解决方案时,我在输出窗口中有以下消息:

TF401190:本地工作区[MACHINE_NAME; USER_NAME]中有158412项,超过了建议的100000项限制.要提高性能,请减少工作空间中的项目数,或将工作空间转换为服务器工作空间.

这不是一个错误,而是一个警告,我可以正常工作,虽然我觉得我的工作中有一个真正的性能影响.

为了解决这个问题,我想一方面"隐藏"我不使用的单个分支/文件夹.另一方面,我不想隐藏太多,一般来说我想知道是否有一些文件夹中有不必要的许多文件.

问题:是否有TFS控制台/ PowerShell命令,或用于检索可从我的Visual Studio客户端计算机执行的TFS本地工作区中的项目计数?类似于Treesize-App的东西,但对于TFS?

我google了一下,但没有找到任何真正有用的东西.我在MSDN发现了这一点,证实了我收到消息的原因,但它没有提供任何解决方案.是一个试图做某事的人,但该项目从来没有让它成为代码复制品.

我们的团队使用VS2013 Update 5/TFS 2013 Update 5

非常感谢您的帮助.

小智 6

您可以使用TFS API执行此操作:

var uri = new Uri("https://tfs.mydomain.com/tfs/myteamprojectcollection")
var tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(uri);
var vcs = tpc.GetService<VersionControlServer>();

var itemSet = vcs.GetItems("$/MyServerPath",RecursionType.Full);

Console.WriteLine(itemSet.Items.Length);
Run Code Online (Sandbox Code Playgroud)

您可以将其放入控制台应用程序中,或者如果更改语法,也可以将其称为PowerShell脚本.

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.VersionControl.Client")

$url = "https://tfs.mydomain.com/tfs/myteamprojectcollection";
$tfs = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($url)
$vcs = $tfs.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer])
$set = $vcs.GetItems("$/MyServerPath", [Microsoft.TeamFoundation.VersionControl.Client.RecursionType]::Full)

Write-Host $set.Items.Length
Run Code Online (Sandbox Code Playgroud)