c# - TFS API - 每次变更集迭代都很慢

标签 c# visual-studio-2012 tfs tfs-sdk

问题背景:

我正在使用 TFS api 查询我的 TFS 服务器上的大范围(1-600+)文件。

我从每个文件中收集其所有的 ChangesetId,然后将其收集在一个列表中。

代码:

这是我正在使用的代码。它可以正常工作,为 QueryHistory 方法中的指定参数生成一个包含所有项目的 IEnumerable 更改集列表。

        VersionSpec versionFrom = VersionSpec.ParseSingleSpec("C1", null);

        VersionSpec versionTo = VersionSpec.Latest;

        var changesetList = tfsDevItem.VersionControlServer.QueryHistory(tfsDevItem.ServerItem, VersionSpec.Latest, 0, RecursionType.None, null, versionFrom, versionTo, Int32.MaxValue, true, false);

        item.VersionList = new List<int>();

        //*****Very slow iteration*****
        foreach (Changeset ChangesetId in changesetList)
        {
            item.VersionList.Add(ChangesetId.ChangesetId);
        }

问题:

当遍历 foreach 的 chagesetList 中的每个变更集时,所花费的时间难以置信。例如,115 个文件需要 1 分钟来生成每个文件变更集 ID 的列表。

我可以改进吗?如果是怎么办?

最佳答案

需要这么长时间的问题是代码中的“True”:

var changesetList = tfsDevItem.VersionControlServer.QueryHistory(tfsDevItem.ServerItem, VersionSpec.Latest, 0, RecursionType.None, null, versionFrom, versionTo, Int32.MaxValue, , 假);

您只需要变更集编号,因此在此处传递“false”。

该参数负责填充 Changeset 的“更改”属性.那些Changes持有 MergeSources 和 ChangeType 等。

关于c# - TFS API - 每次变更集迭代都很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23109315/

相关文章:

c# - Windows 8 与 Windows Server 2012 上可构建的 C# 应用程序的区别?

c++ - 编译 Sqlite C++ 库时 Visual Studio 2013 崩溃

c# - 在 VS2012 中使用 EventToCommand 时出现 XAML "Invalid Markup"错误

visual-studio - TFS 中是否有 'Get Latest Version' 预览? (如 VSS 'Get' 命令)

asp.net - 如何在设置 ADFS 身份验证时通过 TFS 将 asp.net web 应用程序部署到开发团队

git - Visual Studio 2015 将仅使用 git 进行源代码管理

c# - 我如何使用 NServiceBus 做竞争消费者

c# - 如何从 gps 点创建谷歌地图折线?

c# - 根据 id 将对象列表从一个列表复制到另一个列表

c# - 读取文件,并监视新行