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

时间:2015-08-17 09:06:29

标签: powershell visual-studio-2013 version-control tfs tfs2013

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

  

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

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

为了解决这个问题,我希望一方面能够"斗篷"我不使用的单个分支/文件夹。另一方面,我不想披露太多,一般来说我想知道是否有一些文件夹里面有不必要的文件。

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

我用谷歌搜索了一下,但没有发现任何真正有用的东西。 I found this on MSDN确认了我收到消息的原因,但它没有提供任何解决方案。 Here是一个试图做某事的人,但该项目从来没有让它成为代码复制品。

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

感谢您的帮助。

1 个答案:

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

您可以将其放入控制台应用程序中,或者如果更改语法,也可以将其称为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