Visual Studio 构建速度非常慢

85

这适用于2008和2010版本(也可能适用于之前的版本)。同时适用于C++和C#项目。

在初始构建(重新启动后)时,运行速度正常,并且CPU利用率相当不错。经过“一段时间”(即使用计算机进行“其他工作”),接下来的构建可能会非常缓慢,并且CPU利用率非常低。我发现唯一的修复方法似乎是重新启动,然后循环重新开始。这在WPF和非WPF项目中都会发生,尽管在WPF中要糟糕10倍。

这在不同的机器上都发生过,甚至在为不同组织工作时也是如此,因此我认为这是Visual Studio的问题,而不是环境问题。我已经尝试了通常的解决方法(谷歌搜索、关闭防病毒软件、Intellisense、Resharper等),目前期待着获得我所订购的SSD。

我的当前机器规格是2.7 GHz四核、4GB RAM、XP(还没有在工作中使用Win7),250GB硬盘等。

这个问题的原因是什么,如何解决?


如果我要猜的话,我会说Visual Studio保留了一定比例的可用内存,用于其缓存。当可用内存较少时,VS使用的内存也较少,因此缓存也较少。不过我不确定。 - Phillip Schmidt
在使用VS2010和WPF时遇到了同样的问题,我有一块固态硬盘,但并没有什么用。 - BrainSlugs83
嗯,多年来我在使用 VS2008 和 VS2010 这些本地 C++ 编译器时遇到过这个问题,但最近好像没有再出现过了。 - drescherjm
24个回答

1
如果是ASP.NET MVC项目,请检查.csproj文件,看看是否设置了<MvcBuildViews>true</MvcBuildViews>。这可能会导致构建缓慢。

1
如果一个解决方案中有多个项目,请尝试仅构建更改的项目,而不是构建整个解决方案。 即使用 Alt+B+U 而不是 Alt+B+B。

1
我的解决方案是关闭无线网络,这可以解决Visual Studio非常缓慢的问题(构建任何东西需要约1.5-2分钟)。我同时启用了有线和无线网络。似乎我的计算机试图使用无线连接连接到我们本地服务器,但无线网络无法访问,这导致了长时间的延迟。

你能再详细解释一下吗?-- 网络速度究竟如何影响Visual Studio的构建时间?-- 无论如何,我在桌面上(没有无线网络卡)遇到了上述描述的问题。 - BrainSlugs83
1
这件事情发生的时间太久远了,我已经记不清具体细节了。大致上是这样的,当我连接了无线网络后,由于某种原因,构建过程尝试连接到网络驱动器,并等待Windows默认的网络位置超时才继续构建。当我关闭了无线网络(它不允许访问我们的网络驱动器),只使用有线网络(提供对网络驱动器的访问)时,构建过程加快了很多。 - Antti
Visual Studio 会尝试连接到 Microsoft 服务器并下载一些信息。如果您的互联网连接关闭,则构建将正常运行。 - Ali Amanzadegan

1

备份文件并删除此文件夹中的所有内容。

C:\Users\{username}\AppData\Local\Microsoft\WebsiteCache

重新启动Visual Studio并检查性能。

希望这可以帮助!谢谢


0
"

“有一段时间”大概需要多久?(例如,几个小时?几天?)

问题可能很简单,你的RAM用完了。Ctrl-Shift-Esc将加载“进程监视器”,在那里您可以查看内存利用率并杀掉过多占用内存的程序。一旦内存不足,链接器就会因尝试将内存交换到磁盘而变慢(而且除非您打开系统利用率,否则Windows通常不会报告交换开销)。根据项目的大小,链接可以使用大量内存制作表格。

"

1
不对,内存很充足(例如4GB中使用了1.5GB),所以几乎可以确定不是磁盘抖动的问题。在重新启动后,经过一些调试可能会出现“有时候”是第二或第三次构建。我在Proc Explorer中没有找到任何有用的信息。唯一的“线索”就是重新启动后,它能够正常工作一段时间。问题是,在进行了几次构建/调试之后,有什么东西导致机器堵塞?谢谢 - Maz
1
我在我的8GB和16GB机器上遇到了问题(使用VS 2010的WPF项目),两种情况下都有超过50%的可用空间。16GB是一台2.2 GHz四核心带HT的机器,而8GB是一台3.2 GHz AMD六核心机器。 - BrainSlugs83
抱歉误点了踩,无法撤销。如果回答被编辑过,我可以撤销它。 - Krzysztof Bociurko

0

曾经有一次,我的一个程序在几周后编译所需的时间明显增加。出于沮丧,我删除了解决方案和项目的调试文件夹。Visual Studio 首先重新构建整个解决方案(这确实需要一些时间),但之后,编译过程恢复了原来的速度。不确定这对你是否有效。


0

作为快速检查,运行扫描以确保您的系统当前没有任何感染,然后转到Windows Defender安全中心->病毒和威胁防护->禁用实时保护:

实时保护

在Visual Studio中重新构建您的解决方案,注意所需的总时间,并在任务管理器中观察Antimalware Service Executable是否消耗了大量处理器时间。假设您的构建速度更快,CPU更少繁忙,恭喜您,您已经确定了性能问题的一个原因。下一步是负责地告诉Windows Defender不要完全关闭它,而是让其不要干扰Visual Studio。


0

请检查您的Internet属性选项(连接),确保已勾选自动检测设置


0
我已经更新了所有的NuGet包,而且它正常工作了!

0
在我的情况下,我使用了项目目录内的“wwwroot”目录来存储几GB的数据。将“wwwroot”移动到解决方案目录外可以解决构建时间过长的问题。对于我的.NET Core Web应用程序,我编辑了launchSettings.json并添加了新的环境变量ASPNETCORE_WEBROOT
...
"profiles": {
    "Development": {
      "commandName": "Project",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "ASPNETCORE_WEBROOT": "../../wwwroot"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    },
...

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