Visual Studio 2013 + TFS =慢

时间:2015-01-19 10:40:21

标签: visual-studio-2013 tfs

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

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

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

我已经尝试了以下内容:

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

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

3 个答案:

答案 0 :(得分:53)

您可以使用多种选项,但尚未尝试过:

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

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

另一方面,服务器工作区只是查看“只读”和“只读”。一点文件。如果有一个,TFS将认为它没有变化。如果它没有,TFS会假定它已经签出。

本地工作空间有其优势,特别是如果您大量离线工作,但在上述情况下它们会导致严重减速。

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

enter image description here

默认情况下,Visual Studio在引入此功能后就会创建一个本地工作区。

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

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

要隐藏文件,请编辑工作区映射并添加您不想检索的文件夹,并设置"活动" to" cloak",或者你可以直接从Source Control Explorer的上下文菜单中隐藏,你可以在 Advanced 然后 Cloak 下找到它。

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

缓存损坏

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

  

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

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

修复Visual Studio并关闭扩展程序

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

某些扩展程序会严重降低与源代码管理的交互速度。例如,前面提到的Source Control Explorer Extensions可以选择更改磁盘上文件的日期,这可能导致" Get"操作在最后停止了几秒钟。

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

可疑扩展包括以下内容:

  • 扩展调试器
  • 扩展团队资源管理器
  • 扩展源代码管理资源管理器

关闭Windows代理自动检测

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

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

enter image description here

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

启用client side tracing as described here。在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>

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

  

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

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

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

答案 1 :(得分:1)

我遇到了与Win10 64bit非常相似的问题。 VS2015-TFS等我通过更改“电源保护程序”中的笔记本电脑电源计划解决了这个问题。高性能&#39; ......

答案 2 :(得分:-2)

TFS的问题在于它与您的IDE完全集成。

我建议使用GIT。您可以使用各种工具将项目从tfs转换为git,例如git-tfs,请参阅https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/migrate_tfs_to_git.md

还有一篇关于这样做的博文: https://chriskirby.net/blog/migrate-an-existing-project-from-tfs-to-github-with-changeset-history-intact