有一些选项可供您选择,您尚未尝试过:
本地工作区与服务器工作区
当您拥有一个大的工作区(指工作区中有许多文件)或者当您的工作区包含许多二进制文件(例如NuGet包)时,如果将其配置为“本地工作区”,它可能会显著减慢速度。本地工作区在磁盘上保留原始文件(最新版本,就像TFS服务器知道的那样)的gzip文件。每当有很多文件更改时,它们都会与上次已知副本进行比较,并根据此进行签入或签出。
另一方面,服务器工作区只是查看文件的“只读”位。如果它具有一个,则TFS会认为它没有更改。如果它没有,则TFS会认为它已经被签出。
本地工作区有其优点,特别是如果您经常离线工作,但在上述情况下可能会导致严重的减速问题。
尝试将您的工作区配置为服务器工作区,以查看是否可以解决该问题。
![enter image description here](https://istack.dev59.com/4BPiH.webp)
Visual Studio默认创建本地工作区,自从引入此功能以来。
删除大型二进制文件并适当地限定工作区域
如果您要使用本地工作区,可能需要更新解决方案以确保不检入NuGet包、遮盖工作区中的大型二进制文件以及仅抓取实际需要的文件(例如为不同分支创建新的工作区)。
要遮盖文件,可以编辑工作区映射并添加一个不想获取的文件夹,并将操作从“活动”更改为“遮盖”,或者您可以直接从“源代码控制资源管理器”的上下文菜单中选择“高级”,然后选择“遮盖”进行遮盖。
尝试查找相应的NuGet包或自己创建它们,而不是检入您的二进制引用。大型二进制文件在版本控制系统中总是很麻烦,因为您永远无法合并它们,它们基本上只会占用空间。
缓存损坏
Team Explorer客户端在以下位置保留缓存:
C:\ Users {用户名} \ AppData \ Local \ Microsoft \ Team Foundation {版本} \ Cache
由于某些原因,可能导致其损坏。清除所有子文件夹和 VersionControl.config
可以是最后的手段,使其再次正常工作。
修复 Visual Studio 并关闭扩展
有时候 Visual Studio 本身会因为所有安装的热补丁、服务包和其他事物而感到困惑。更不用说所有可能影响其行为的扩展了。
一些扩展可以严重减缓与源代码控制的交互。例如上述的 Source Control Explorer Extensions 就有一个选项可以更改磁盘上文件的日期,这可能会导致 "Get" 操作在最后几秒钟停滞。
关闭此类扩展以查看是否仍然存在该行为始终是您应该执行的操作。修复 Visual Studio 并重新应用最新的更新包也可能解决此类问题。
可疑的扩展包括:
- 扩展调试器
- 扩展团队资源管理器
- 扩展源代码控制资源管理器
关闭 Windows 代理自动检测
我看到了一些奇怪的行为,不是在所有网络上,也不是在所有代理服务器上,当Windows Proxy自动检测打开时。代理检测可能会导致长时间等待,因为它试图找出要连接的代理。
如果您依赖代理,请尝试禁用代理脚本和自动检测,并尝试直接在经典代理配置屏幕中设置代理。
![enter image description here](https://istack.dev59.com/VjQxp.webp)
尝试通过较困难的方式找到问题
按照此处所述的方法启用客户端跟踪。在devenv.exe.config
中包含以下片段。它将把发生在TFS周围的所有内容转储到日志文件中。定位问题可能会很麻烦,但它将为您提供大量信息:
<system.diagnostics>
<switches>
<add name="TeamFoundationSoapProxy" value="4" />
<add name="VersionControl" value="4" />
</switches>
<trace autoflush="true" indentsize="3">
<listeners>
<add name="myListener" type="Microsoft.TeamFoundation.TeamFoundationTextWriterTraceListener,Microsoft.TeamFoundation.Common, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" initializeData="c:\tf.log" />
<add name="perfListener" type="Microsoft.TeamFoundation.Client.PerfTraceListener,Microsoft.TeamFoundation.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</listeners>
</trace>
</system.diagnostics>
您可以运行启用了 Activity Trace Logging 的 Visual Studio。如果有插件行为异常,通常会在 ActivityLog.xml
中记录信息。要启用此类跟踪,请从命令行使用 /log
选项启动 Visual Studio。日志将被存储在此处:
%AppData%\Microsoft\VisualStudio\12.0\ActivityLog.XML
在最糟糕的情况下,您可以将一个Visual Studio或者分析器(或者Intellitrace命令行工具)连接到Visual Studio,并收集发生在Visual Studio内部的所有日志。
另外,您可以尝试使用
Process Explorer监控系统,以查看IO或网络访问是否影响了性能。