Visual Studio 2013 + TFS =慢

jac*_*oer 26 tfs visual-studio-2013

我正在使用最近重新安装的SSD笔记本电脑.我正在使用带有TFS的Visual Studio 2013.

我的问题是,当我开始和我结束合并或比较时,我需要等待大约20 - 25秒.结束Web调试会话的等待时间也约为30秒.

我没有特殊的配置.TFS服务器在我们的局域网中,我通过以太网连接.我没有在TFS设置中配置代理.

我已经尝试过以下方法:

  • 删除了suo文件
  • 添加了visual studio 2013 app config的设置以禁用代理.
  • 在本地存储符号
  • 重新添加映射
  • 重新添加工作区

对于TFS之外的项目,我没有这个问题.我的同事没有遇到这个问题.

jes*_*ing 53

有许多选项可供您使用,您还没有尝试过:

本地工作区与服务器工作区

当您有一个大工作空间(意味着工作区中有大量文件)或工作空间包含大量二进制文件(例如NuGet包)时,当它被配置为"本地工作空间"时,它可能会大大减慢.本地工作空间将原始文件(TFS服务器知道的最新版本)保存在磁盘上的gzip压缩文件中.每当许多文件发生变化时,都会将它们与最后一个已知副本进行比较,并根据它们进行检入或检出.

另一方面,服务器工作区只是查看文件的"只读"位.如果它有一个,TFS将认为它没有变化.如果没有,TFS会认为它已经签出.

本地工作空间有其优点,特别是如果您大量离线工作,但它们可能会导致上述情况严重减慢.

尝试将工作区配置为"服务器"工作区,以查看是否可以解决问题.

在此输入图像描述

默认情况下,Visual Studio在引入此功能后创建了本地工作区.

删除大型二进制文件,并适当调整工作区的范围

如果要使用本地工作区,可能需要更新解决方案以确保未签入NuGet包,工作区中的大型二进制文件被隐藏,并且只捕获您真正需要的文件(例如,创建新工作区对于不同的分支).

要隐藏文件,请编辑工作区映射并添加您不想检索的文件夹,并将操作从"活动"设置为"隐藏",或者您可以直接从源代码管理资源管理器的上下文菜单中隐藏,您可以下找到Advanced,然后Cloak.

不要检入二进制引用,而是尝试查找相应的NuGet包,或者自己创建它们.对于版本控制系统来说,大型二进制文件总是一种害虫,因为你永远无法合并它们,它们基本上只是坐在那里.

缓存损坏

Team Explorer客户端将缓存保存在以下位置:

C:\ Users {用户名}\AppData\Local\Microsoft\Team Foundation {version}\Cache

由于某种原因可能已经损坏了.清除所有子文件夹,这VersionControl.config可能是让它再次运行的最后手段.

修复Visual Studio并关闭扩展

有时,Visual Studio本身可能会被所有修补程序,Service Pack和其他已安装的东西搞得一团糟.甚至没有提到可能影响其行为的所有扩展.

某些扩展可能严重降低与源代码控制的交互.例如,前面提到的Source Control Explorer Extensions有一个选项来更改磁盘上文件的日期,这可能导致"Get"操作在最后停顿几秒钟.

关闭这些扩展以查看在没有它们的情况下行为是否仍然存在总是应该做的事情.修复Visual Studio并重新应用最新的更新包也可以解决这些问题.

可疑扩展包括:

  • 扩展调试器
  • 扩展团队资源管理器
  • 扩展Source Control Explorer

关闭Windows代理自动检测

当Windows代理自动检测功能打开时,我已经看到了一些strage行为,而不是所有网络,而不是所有代理服务器.代理检测可能导致长时间等待,因为它试图找出要连接的代理.

尝试禁用代理脚本和自动检测,如果您依赖代理,请尝试直接在经典代理配置屏幕中进行设置:

在此输入图像描述

尝试以艰难的方式找到问题

如此处所述启用客户端跟踪.在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>
Run Code Online (Sandbox Code Playgroud)

您可以运行Visual Studio并启用活动跟踪日志记录.如果插件行为不端,通常会导致插件中的信息ActivityLog.xml.要启用此类跟踪,请使用/log命令行中的选项启动visual studio .该日志将在此处删除:

%APPDATA%\微软\ VisualStudio的\ 12.0\ActivityLog.XML

在最坏的情况下,您可以将一个Visual Studio或探查器(或Intellitrace命令行工具)附加到Visual Studio,并收集Visual Studio中发生的每个签名的日志.

您可以尝试使用Process Explorer监视系统,以查看IO或网络访问是否会降低您的速度.

  • TFS让我感到极度缓慢.例如:扩展文件夹或分支需要20-30秒.切换到服务器工作区使其快速闪电. (2认同)