如何解决Visual Studio 2012卡死/锁定问题

8
我正在使用Visual Studio进行PHP开发,我的解决方案包含PHP、SSRS和SQL Server(SSDT)项目。我使用TFS进行版本控制。因此,在我的开发环境中可能会出现许多问题。
我遇到了间歇性的挂起问题,通常每次持续5分钟左右。Visual Studio显示等待光标,并且如果我在VS中单击任何位置,窗口就会变暗。然后我只能等待。有时我可以结束devenv.exe任务,其他时候需要几分钟才能终止该任务。如果我有耐心,我会等待,最终(大约5分钟左右)VS会恢复正常。即使我终止进程,也从未遇到过数据丢失、源代码控制问题等情况。
它有时会在保存时发生,有时在检入时发生,有时在检出时发生,有时在构建时发生。我一直无法分辨其行为模式。
我的工作站资源全部正常-没有RAM、I/O、网络或CPU问题。 我该如何排除此问题?我可以以某种日志记录模式运行VS,以便在这些锁定期间精确定位哪个操作花费了太长时间吗?

以安全模式运行它,看看是否是插件:devenv.exe /SafeMode - ta.speot.is
您也可以尝试打开日志记录:denenv.exe /log - Mike Cheel
@ta.speeot.is - 如果我在安全模式下运行,由于我的PHP开发依赖于扩展程序,我无法加载我的项目。 - Shoeless
3个回答

10
要在Visual Studio中启用日志记录,请运行:devenv.exe /log。
我个人会使用快捷方式。

3
对于其他读者,您还必须在命令行中指定日志文件名,例如:devenv.exe /log c:\temp\vs.log(请参阅http://msdn.microsoft.com/en-us/library/ms241272(v=vs.110).aspx)。 - Shoeless
1
这是一个有用的链接...它针对VS2010,图片已经失效,但这是我能找到的关于该主题的最佳文章:http://blogs.msdn.com/b/visualstudio/archive/2010/02/24/troubleshooting-with-the-activity-log.aspx - Shoeless
VS卡住了。我查看了日志,发现我的Layouts-o-rama扩展有很多错误。我禁用了该扩展,自那以后就没有出现VS卡死的情况了! - Shoeless
2
如果您未指定日志文件名称,则默认的日志文件位于:%APPDATA%\Roaming\Microsoft\VisualStudio<version>\ActivityLog.xml。很高兴日志记录能帮到您。 - Mike Cheel

5
考虑删除从持续集成构建中遗留下来的旧TFS工作区定义。
我们在一个大型Team Foundation Server项目树中遇到了同样的问题。有时,但不总是,使用Visual Studio 2010或Visual Studio 2012打开解决方案会完全卡住。VS 2010最脆弱;VS 2012似乎较少受影响,但它仍然会卡住。
通过监视TFS服务器机器和底层SQL Server机器上的服务器活动,我们能够得到一些线索。某个查询存储过程在SQL Server中使用过多的CPU时间。我们将这个存储过程名称跟跟踪TFS操作相关联,以扫描其他用户对文件的检出的TFS工作区定义。
我们的TFS环境已经使用了3年多,并且我们一直使用“僵尸军队”作为TFS Build Agent主机的开发人员工作站进行持续集成构建定义。我们还为主要版本创建新的TFS分支。每个分支包含约20个单独的Visual Studio解决方案及其自己的构建定义。
随着时间的推移,我们在每个开发人员工作站上积累了约2000个TFS工作区定义。我们曾经同时拥有10台工作站,每台都有自己的定义。
在Visual Studio命令窗口中,以TFS管理员身份运行以下命令来识别我们的“构建用户”创建的所有工作区:
tf workspaces /collection:tfservername\collectionname /owner:ourbuilduser >c:\tf_ws_del.bat
然后,我们使用全局替换和Notepad++编辑器宏记录器将每个结果行转换为此形式:
tf workspace /delete /collection:tfservername\collectionname workspacename;ourbuilduser <c:\yes.txt
其中C:\ yes.txt包含一行“y”。
我们还使用一些人类判断力删除了以我们最近的TFS分支命名的工作区的删除行。
然后,在相同的Visual Studio命令窗口中运行c:\ tfs_ws_del.bat脚本,并耐心等待其完成。
最终结果:我们的Visual Studio解决方案打开非常快。即使在源控制资源管理器中浏览文件夹层次结构的速度也大大加快。
警告:对于大量工作区的删除操作可能会使底层SQL Server上的TempDB大量扩展。与您的数据库管理员协调,监视SQL Server机器上的空间。通过图形化的TFS管理员控制台工具停止并重新启动TFS Collection有助于回收部分TempDB空间并将其返回到其内部的“空闲块”列表。

0

当您的调试选项中指定的符号服务器宕机或无法访问时,这种情况似乎也会发生...在每个文件访问超时时,它实际上不会挂起,但看起来像是挂起了。

为了暂时解决这个问题,请取消勾选那些宕机的符号服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接