TFS 检查包含 "larger"二进制文件的变更集超时

标签 tfs tfsintegrationplatform

我正在执行从 tfs.visualstudio 到内部部署 2012 服务器的 TFS 集成迁移。我遇到了一个包含多个超过 1 MB 的二进制文件的特定变更集的问题,其中一些是 15-16 MB。 [我正在使用本地 TFS 远程工作 (WAN)]

从 TFSI 日志中,我看到:Microsoft.TeamFoundation.VersionControl.Client.VersionControlException: C:\TfsIPData\42\******\Foo.msi: The request was aborted: The request was canceled. ---> System.Net.WebException: The request was aborted: The request was canceled. ---> System.IO.IOException: Cannot close stream until all bytes are written.
做一些谷歌搜索,我遇到了其他人遇到类似的问题,不一定与 TFS 集成有关。如果我只是像正常一样 checkin 满足相同标准的变更集,我相信会出现同样的问题。据我了解,上传文件( checkin )时,默认块大小为 16MB,超时为 5 分钟。

我在这个网站上的互联网上传速度只有 1Mbit/s。 (虽然我认为问题会随着足够的上传带宽得到缓解,但并不能解决问题)。

使用 TCPView,我在上传过程中观察了从我的客户端到 TFS 服务器的连接。我看到的是 9 个同时连接。因此,我的带宽在 9 个文件上传之间共享。果然,大约 5 分钟后,连接在上传字节计数完成之前就结束了。

我的问题是,如何配置我的 TFS 客户端以使用更少的并发连接和/或更小的块大小和/或增加的超时?这可以在全局某个地方完成以涵盖 VS、TF.EXE 和 TFS 集成吗?

最佳答案

在用 IL DASM 浏览 Microsoft.TeamFoundation.VersionControl.Client.dll FileUploader 一段时间后,我在构造函数中发现了字符串 VersionControl.UploadChunkSize .看起来它用于覆盖默认块大小(DefaultUploadChunkSize = 0x01000000)。

所以,我将此添加到 TfsMigrationShell.exe.config

<appSettings>
    <add key="VersionControl.UploadChunkSize" value="2097152" /> 
</appSettings>

并再次运行 VC 迁移——这次它超越了问题变更集!

基本上,TFS 客户端 DLL 将尝试同时上传多个文件(在我的情况下为 9)。您的上传带宽将在文件之间分配,如果任何单个文件传输不能在 5 分钟内完成 16MB,操作将失败。所以你可以看到,在适度的上传带宽下,包含多个二进制文件的变更集可能会超时。您唯一可以控制的是每 5 分钟超时块的字节数。默认值为 16MB,但您可以减少它。我把我的减少到 2MB。

我想这可以对 devenv.exe.config 执行,以在执行开发人员代码 checkin 时处理相同的问题。希望这些信息能帮助其他人并为他们节省一些时间。

关于TFS 检查包含 "larger"二进制文件的变更集超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18992469/

相关文章:

tfs - 在 TFS 2010 中的集合之间移动项目

tfs - 从 TFS 2008 迁移到 TFS 2010

javascript - 创建自定义控件 tfs 2015

visual-studio -/recursive 在 Team Foundation Server Power Tools 中实际上做了什么?

javascript - .Net Core 和 Typescript : how to instruct TFS to ignore generated js and js. 映射文件

用于获取 TFS 集合/项目列表的 PowerShell 脚本

TFS_SCHEMA_VERSION 将 tfs 2010 更新到 sp1 时出现问题

plugins - Jira 和 TFS 集成?