我真是一筹莫及。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和网络共享之间来回复制它。每个页面加载都要等上两分钟,这要烦人得多。


当前回答

在Visual Studio中:

工具—>选项—>调试—>符号

选择“仅指定模块”。单击“指定模块”链接,并添加一个空白模块(单击新文档按钮并点击OK)。

其他回答

在我的情况下,问题是一个外部运行的exe文件-即:

WUDFCompanionHost.exe

"Windows Driver Foundation - User-mode Driver Companion Framework Host Process".

进程,该进程稳定地占用了10%的CPU。杀死它直接帮助,在一秒钟内页面已经加载。

对我来说是IE 9.08.8112.16241。当我使用Firefox或Chrome时,我发现F10或F11的调试并不缓慢。我不知道IE的问题是什么,但我现在正式鄙视使用它进行测试。

更新:我已经关闭了所有的IE程序插件,它已经恢复到全速。每次打开一个就会发现LastPass(对我来说)是罪魁祸首。我想我终究不能责怪多发性硬化症。

几年以后…… 如果你正在使用Brave,你可以很容易地访问你的扩展,并在调试时一次(或多个)关闭它们。

brave://extensions

只需点击切换滑块。请注意,除了DuckDuckGo隐私必需品之外,我所有的都是打开的。它们不会被删除,只是暂时禁用。

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

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

重新启动计算机

我知道这听起来太简单了,但这是唯一对我有效的方法。

清除缓存等使用选项1和2;设置/故障排除选项3和4,享受!

选项1:导航到IIS express,清除缓存和站点

cd "C:\程序文件(x86)\IIS Express\"

运行此appcmd.exe list site /xml | appcmd delete site /in Del /S /F /Q %temp% -清除Userprofile temp文件夹。 运行这个Del /S /F /Q %Windir%\Temp

此外,清除%temp%中的临时文件并注销或重新启动

这将清除Windows临时文件夹。这将删除所有的网站,享受!


选项2:删除/重新创建临时文件夹

Cmd> rmdir C:\Users\\{username}\AppData\Local\Microsoft\WebsiteCache /s /q Cmd> rmdir C:\Users\\{username}\AppData\Local\Temp /s /q


选项3:来自MSDN的JMC(只是我的代码)选项

要在Visual Studio中启用或禁用Just My Code,请在“Tools > Options(或Debug > Options) > Debugging > General”下选择或取消选择“enable Just My Code”。


选项4:配置Visual Studio/禁用常见插件问题

甚至更多的Visual Studio设置 你也可以配置Visual Studio并禁用环境上的资源删除功能,不记得我从哪里得到的,但是我会很快发布更多的内容。

Environment ->一般

Uncheck “Automatically adjust visual experience based on client performance” Uncheck “Enable rich client visual experience” Check “Use hardware graphics acceleration if available” Environment -> AutoRecover Uncheck “Save AutoRecover information every” Environment -> Documents Check “Save documents as Unicode when data cannot be saved in codepage” Environment -> Keyboard Set “ForceGC” to ctrl+num1 Set “ReSharper_Toggle” to ctrl+num0 (if ReSharper is used) Set “ReSharper_EnableDaemon” to ctrl+num8 (if ReSharper is used) Environment -> Startup Set “At startup” to “Show empty environment at startup” Uncheck “Download content every” Environment -> Synchronized settings Uncheck “Synchronize settings across devices when signed into Visual Studio”