我正在执行从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集成。如果我只是检查符合相同标准的正常变更集,我相信会出现同样的问题。据我了解,在上传文件(签入)时,默认的块大小为16MB,超时为5分钟。
我的网上传速度仅为1Mbit / s。 (虽然我认为问题可以通过足够的上传带宽来缓解,但它无法解决问题。)
使用TCPView,我在上传过程中观察了客户端与TFS服务器的连接。我看到的是9个同时连接。因此,我的带宽在9个文件上传之间共享。果然,大约5分钟后连接就会在上传字节数完成之前完成。
我的问题是,如何配置我的TFS客户端以利用更少的并发连接,和/或更小的块大小,和/或增加超时?这可以在某个地方全局完成,以涵盖VS,TF.EXE和TFS集成吗?
答案 0 :(得分:10)
在使用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中完成,以便在执行开发人员代码检查时处理同样的问题。希望这些信息可以帮助其他人,并节省一些时间。