为什么在Visual Studio中加载我的解决方案需要这么长时间?

55

我们有一个超过200个项目和数千个文件的庞大解决方案。尽管如此,该解决方案在Visual Studio 2010和2012中加载速度通常很快。然而,在将整个SVN存储库复制到另一个位置后,加载和关闭该解决方案突然变得非常慢。(这里指的是30-60分钟!)

15个回答

80

我找到了解决方案并想在这里分享,希望可以节省某些人数小时的研究和盯着“正在准备解决方案…”对话框的时间。

当使用Process Monitor检查devenv.exe进程时,我发现它忙于访问.svn目录。以下是我所做的(这种方法解决了问题):

  1. 关闭Visual Studio
  2. 打开Visual Studio但不加载解决方案
  3. 禁用AnkhSvn作为源代码控制插件(工具->选项->源代码控制->插件选择->无)
  4. 在Productivity Power Tools中禁用“Document Well 2010 Plus”(VS2010)或“Custom Document Well”(VS2012)(工具->选项->Productivity Power Tools)- 我从某个地方读到过这个,可能也有帮助...
  5. 关闭Visual Studio
  6. 删除解决方案的*.suo文件。 它位于与解决方案本身相同的文件夹中。 注意: 您将失去解决方案的几个设置,例如当前打开的文件、断点、书签、当前解决方案配置和平台(例如Debug x86)等。
  7. 重新启动Visual Studio
  8. 加载解决方案——现在加载速度要快得多!
  9. 关闭Visual Studio
  10. 打开Visual Studio但不加载解决方案
  11. 重新启用AnkhSvn和“文档窗口”
  12. 重新启动Visual Studio
  13. 打开解决方案——仍然可以在几秒钟内加载!

我不知道这些步骤中哪些实际上解决了问题。可能并不需要所有这些步骤,但我不想重现问题以找出可以省略哪些步骤 :)


15
谢谢您分享这个。在我的情况下,删除suo文件提高了解决方案的加载性能。 - rpattabi
15
第6步解决了我的问题 - 删除解决方案中的*.suo文件。 - SausageFingers
1
这是我认为很有用的博客文章:http://briannoyes.net/2008/05/10/the-evil-suo-file-fighting-and-winning-with-visual-studio/ - But I'm Not A Wrapper Class
1
第六步也解决了我的问题。 - Sam Shiles
2
我只执行了第三步来禁用AnkhSvn插件。这对我很有效。时间从半小时缩短到了一分钟。 - Matthew Allen
显示剩余5条评论

5

这些都没对我有帮助,我的解决方法是……我使用了sysinternals的ProcMon工具,过滤devenv,并发现了很多fussionlog的记录。几周前我启用了fussionlog来进行调试,但没有想到要禁用它。我只需要禁用fussionlog,就可以更快地打开解决方案。


3

您可以在安全模式下打开Visual Studio,然后在打开项目后检查插件和源代码控制设置。

安全模式是指“启动Visual Studio,仅加载默认环境和服务。”

如何操作:

devenv /SafeMode 

根据您的路径进行操作。
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" /SafeMode

来源:https://msdn.microsoft.com/en-us/library/ms241278.aspx

在IT技术中,"锁定"是一种机制,它允许多个进程或线程同时读取一个共享资源,但只有一个进程或线程可以写入该资源。这种机制确保了对共享资源的并发访问不会导致数据损坏或不一致。

在SQL Server中,有两种类型的锁定:共享锁和排他锁。共享锁允许多个事务同时读取同一资源,而排他锁则只允许一个事务进行写操作。在实际应用中,需要根据业务需求选择适当的锁定级别以确保数据的完整性和一致性。

除了锁定机制外,SQL Server还提供了其他的并发控制机制,如事务隔离级别和行版本控制。这些机制可以帮助开发人员更好地管理数据库并避免潜在的并发问题。


3
在我的情况下,不需要进行任何建议中的干预步骤即可使以下内容正常工作:
  1. 结束 Visual Studio 进程。
  2. 直接启动 Visual Studio(例如,不要从 .sln 文件启动)。
  3. 然后在 Visual Studio 中打开解决方案。
对我而言,这就足以快速加载问题解决方案,无需更改任何设置或删除任何文件。

对我来说,这个方法非常有效。与解决方案一起打开VS需要几分钟的时间,但现在完成所有三个步骤只需要不到一分钟。 - glaucon

2

顺便说一下,我知道这是一个晚点的回答,但我发现简单地删除我的大量断点可以解决过长的加载时间和编译时间。这个操作将.suo文件的大小从214MB减少到977KB。让VS自己处理.suo文件。对于包含35个项目的解决方案,编译和加载现在只需要不到1分钟,而不是5-10分钟。Visual Studio 2012 Pro,更新4。


2

其他答案对我都不起作用。CI编译时间很好,但在Visual Studio中加载我的解决方案要花费近两分钟的时间。VS会正常运行,直到下次关闭和打开解决方案。不同版本的VS都显示出了相同的问题,安全模式和删除suo都没有帮助。

最终,我按照http://geekswithblogs.net/akraus1/archive/2014/04/30/156156.aspx的建议使用Windows性能记录器来检测VS并找到问题。通过查看Windows性能分析器中的“CPU使用情况(采样)”部分并添加“堆栈(帧标记)”列,我能够深入了解devenv.exe的使用情况。

结果,按照计数排序的热路径中,Microsoft.VisualStudio.Platform.WindowManagement.ni.dll 有23个调用,然后最终是Microsoft.VisualStudio.ServerExplorer.dllMicrosoft.VisualStudio.Data.Package.dll。这提示我在UI中查看服务器资源管理器并打开数据连接选项卡。在那里,我发现了数百个错误添加的连接,这些连接来自调试web.config的ConnectionString部分。从web.config中删除这些连接将该项目的负载从90秒多减少到几乎瞬间。


1

我发现项目加载速度缓慢的原因不同。

我的情况是使用Git,发现即使切换分支,项目加载速度也比应该慢。

解决方案:以管理员身份运行Visual Studio

原因:公司笔记本电脑存在某些问题,无法提供所需的Git工具访问权限(它无法识别正在使用的git存储库)。

我没有看到任何与Git或个人访问任何项目文件或Git对象有关的问题。


0
在我的情况下,我只是禁用了防病毒软件,然后加载速度就非常快了。

0

我尝试了上述方法,但它没有解决我的问题。

以下是我解决这个问题的方法,希望对你们中的一些人也有效:

  1. 打开没有解决方案的 Visual Studio 2013。
  2. 创建一个新的 C# 控制台应用程序并保存。
  3. 关闭 Visual Studio。
  4. 重新打开在步骤2中创建的控制台解决方案。
  5. 关闭 Visual Studio。
  6. 重新打开之前在“准备解决方案”对话框中卡住的解决方案。我的立即打开了,不再卡住。

0

使用Visual Studio 2015,我最终创建了一个新解决方案,添加了现有的项目。

从gehho的答案中删除*.suo在过去是有帮助的,但在我的情况下并没有帮助。解决方案根目录下还有一个隐藏的.vs文件夹中的另一个.suo文件。

这里还有其他关于Visual Studio 2015的答案Visual Studio 2015运行极慢


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