我真是一筹莫及。Visual Studio通常调试很慢,或者只是简单地加载(“开始时不调试”)我的ASP。NET MVC站点。不总是这样:一开始,项目加载得又快又好,但一旦它们加载得慢了,之后就会一直加载得慢。我可能要等1-2分钟甚至更久。

我的设置:

我目前使用的是Visual Studio 2012 Express,但我在Visual Studio 2010 Express中也遇到了同样的问题。我的解决方案存储在一个网络驱动器上;具体来说,它是我的文件重定向到网络驱动器,如果它重要的话。(这是不应该的。在这种设置下,我的网站加载速度很快。)

我通常在Internet Explorer 9中加载,但在Firefox中也会出现同样的问题。

这可能发生在任何ASP中。NET MVC项目,我的工作,它似乎围绕有显示模板,这所有我的ASP。NET MVC项目可以。如果重要的话,它全部是c#和Razor。

症状:

系统会加载我的符号数百次。基本上,如下所示,但是至少有300行这样的行,对于相同的cshtml,每一行都有略微不同的DLL文件:

'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.xighmhow.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.cv5hktkf.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.1o77hs8i.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.jja-77mw.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.l_e9ev_s.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.b4n59gom.dll', Symbols loaded.

在上面,我有三个显示模板:"Contact", "Location"和"StatusCode"。每次调用显示模板时,IIS似乎都要加载两次符号。因此,如果我显示一个包含100个条目的表,调用所有这三个显示模板,它将加载600个单独的符号。

这也不是一个快速的行动。IIS生成的日志文件大约需要200毫秒来加载每个符号。因此,有超长的延迟。

我的尝试:

无论是调试版本还是发布版本,都不重要。 将我的项目放在web服务器上的完整IIS实现上运行非常快,没有任何问题。 卡西尼、IIS Express 7.5和IIS Express 8.0都存在这个问题。 删除所有断点不起任何作用。 Clean Solution,或者删除.suo也不做任何事情。 如果我修复IISExpress /删除My Docs\IISExpress文件夹,或修复/重新安装Visual Studio→这个问题可能会消失,但只是在它回来之前的一段时间。

任何建议都是感激的。

回答更多的问题,是的,我的机器绝对有马力。令人恼火的是,同样的项目,没有任何改变,有时可以很快加载,通常是在我修复IISExpress并删除My Docs\IISExpress文件夹之后。最终,“一些事情”发生了,再次加载的时间缩短到2分钟。我正在做的项目并不复杂。没有外部库或依赖项,我的VS.NET没有任何附加组件。

值得注意的是,这台机器有赛门铁克端点保护,它有造成严重破坏的历史。但是完全禁用它(成为管理员是件好事)并不能解决问题。

在这一点上我有一个理论。我想这一切都是因为我正在处理一个重定向文件夹从一个网络共享。当调试器运行它的数百个“加载符号”行时,我停下来看看它在做什么。它在我的代码中,加载我拥有的DisplayTemplate。进入模板,输出如下:

Step into: Stepping over non-user code 'System.Threading.WaitHandle.InternalWaitOne'
Step into: Stepping over non-user code 'System.Threading.WaitHandle.WaitOne'
Step into: Stepping over non-user code 'System.CodeDom.Compiler.Executor.ExecWaitWithCaptureUnimpersonated'
Step into: Stepping over non-user code 'System.CodeDom.Compiler.Executor.ExecWaitWithCapture'
Step into: Stepping over non-user code 'Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch'
Step into: Stepping over non-user code 'Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromFileBatch'
Step into: Stepping over non-user code 'System.Web.Compilation.AssemblyBuilder.Compile'
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.bciuyg14.dll', Symbols loaded.
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.CompileWebFile'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVPathBuildResultInternal'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists'
Step into: Stepping over non-user code 'System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName'
Step into: Stepping over non-user code 'System.Web.Mvc.VirtualPathProviderViewEngine.FindPartialView'
Step into: Stepping over non-user code 'System.Web.Mvc.ViewEngineCollection.Find'
Step into: Stepping over non-user code 'System.Web.Mvc.ViewEngineCollection.FindPartialView'
Step into: Stepping over non-user code 'System.Web.Mvc.Html.TemplateHelpers.ActionCacheViewItem.Execute'
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.kwj3uqan.dll', Symbols loaded.
Step into: Stepping over non-user code 'System.RuntimeType.CreateInstanceSlow'
Step into: Stepping over non-user code 'System.Web.Mvc.DependencyResolver.DefaultDependencyResolver.GetService'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerViewEngine.DefaultViewPageActivator.Create'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerCompiledView.Render'

看起来Visual Studio在每次调用时都在重新编译我的显示模板,同样是数百次。我的理论是Visual Studio编译文件,将其保存到网络共享,然后以某种方式在其上标记一个新的时间,然后Visual Studio认为文件已经更改。因此,Visual Studio再次重新编译它。不过这只是个理论;我真的不知道。

首先,很明显,我有离线文件(这是办公室里的台式电脑;我一点也不在乎)。我要禁用,重启,明天再试。

另外,将我的项目移到本地C:可以修复它。加载速度很快。但这在工作环境中并不理想。我失去了以前的版本,我的代码根本没有备份,除非我手动复制它,它不再与任何人共享。

如果需要的话,我可以在C和网络共享之间来回复制它。每个页面加载都要等上两分钟,这要烦人得多。


当前回答

对我来说,问题是Avast Antivirus。我卸载了它,改用Windows Defender运行,一切正常。在我的解决方案中,我只在运行Windows应用程序时遇到这个问题,无论是WinForms还是WPF。由于某些原因,它在web应用程序上从来没有慢过。

其他回答

我的问题是由于每次开始调试时都在构建项目。这篇文章中的所有其他解决方案都略有帮助,但仍然导致我不得不等待项目完成。

我的解决方案,以避免构建每次开始调试:

进入解决方案资源管理器- >右键单击解决方案文件- >单击“属性” 在左侧的“属性页”- >中选择“配置”- >,并取消勾选“构建” 单击OK 确保以管理员身份打开visual studio 进入调试->附加到进程 单击复选框显示来自所有用户的进程->查找并选择名为w3wp.exe的进程->单击附加->当警告出现时,单击附加

现在您可以在localhost中导航到想要调试的页面,如果您的文件中设置了断点,您可以立即开始调试,而不必等待项目构建!!

我想我至少知道原因了,虽然还不知道原因。当问题再次出现时,我注意到大量的“conhost.exe”进程被孤立。我会关闭Visual Studio,他们会继续开着。在它们各自上结束任务,最终可靠地解决了问题。(希望)

(请注意,conhost.exe不是Visual Studio进程,尽管Visual Studio使用它。因此,其他用户可能有其他运行conhost.exe的应用程序。我知道我的机器没有,这就是为什么我可以安全地结束任务,除了YMMV。)

为什么会这样呢?当我一次打开多个项目时,这种情况似乎就会发生,尽管我每次只构建和调试其中一个项目,但我往往经常这样做。


编辑#1 -不幸的是,这不是一个“银弹”。这对我来说并不总是有效。通常,当事情变慢的时候,我只是关闭我的VisualStudio会话,然后进入任务管理器并结束它的任何实例,conhost.exe, iisexpress.exe我能找到的Microsoft.VisualStudio.Web.Host.exe和MSBuild.exe。

通常,在那之后,当我重新启动我的项目时,它会很快加载。但并非总是如此。

真的,我认为最好的做法可能是不要在重定向文件夹/网络共享上构建和调试代码。


编辑#2 -两年后,在Visual Studio Community 2013中,这仍然是我的一个问题,但我似乎至少找到了罪魁祸首任务:Explorer.exe。是啊,谁知道呢。当我结束那个任务时,砰,页面在一秒钟内加载。

如果我有一个Windows资源管理器文件浏览器打开我的重定向网络驱动器(这是经常因为我的代码在那里),这个问题似乎发生了。关闭窗口是不够的,我必须杀死整个Explorer.exe任务。我只能猜测它在做什么……被文件句柄搞疯了?

我通常可以使用任务管理器来启动一个新的explorer.exe任务(我只能使用这么多alt-tab), Visual Studio将继续快速加载。但如果我再次打开Windows资源管理器,它几乎总是回到超慢动作。

所以,如果你有一个重定向的网络共享,给它一个机会。这肯定比在当地工作要好。

下面是我在Visual Studio 2012中解决“符号加载缓慢”问题的方法:

Go to Tools -> Options -> Debugging -> General CHECK the checkmark next to "Enable Just My Code". Go to Tools -> Options -> Debugging -> Symbols Click on the "..." button and create/select a new folder somewhere on your local computer to store cached symbols. I named mine "Symbol caching" and put it in Documents -> Visual Studio 2012. Click on "Load all symbols" and wait for the symbols to be downloaded from Microsoft's servers, which may take a while. Note that Load all symbols button is only available while debugging. UNCHECK the checkmark next to "Microsoft Symbol Servers" to prevent Visual Studio from remotely querying the Microsoft servers. Click "OK".

从现在开始,符号加载应该快得多。

请注意,如果您对Microsoft程序集进行了任何更改/下载,您可能需要返回“符号”对话框并再次“加载所有符号”。

正如标题所说,VS调试是缓慢的。我找不到我的问题,所以把它贴在这里,也许能帮到别人。

在我的例子中,缓慢的调试是在IIS托管的网站上。

Vs 2019年(16.4.4) Vs 2017 (15.9.19) Windows 10(1909年) IIS (10.0.18362.1) 边缘(44.18362.449.0)

在第一次网站加载后,它的工作很好,但1分钟后,它变得滞后。请求等待1-2分钟(F12网络选项卡),然后我的断点才能处理它们。我所有活跃的浏览器里都有。

解决方案: 调试时不要使用IIS的Edge。

为了弄清楚问题出在哪里,我花了4-5个小时。我使用Edge + Chrome的工作流程。目前我只使用Chrome(与分离的用户配置文件)。

帮助我的链接:https://answers.microsoft.com/en-us/windows/forum/all/iis-running-very-slowly-after-windows-10-upgrade/dae433ba-4efe-45ab-aa66-824e6fa92b51 “J马科斯”的答案。

这些都不适合我,但我在一个被删除的符号上发现了一个断点。似乎2010年还在继续。看看这是否是你的问题做调试->窗口->断点如果有任何在那里删除他们。

Saunders提到他检查过这个但是在这个问题的解决方案中没有提到。也许对某些人来说是常识,但不是所有人。