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


当前回答

另一个关于时间的最后解决方案是修复VS安装。

转到工具=>获取工具和功能 找到现有的VS安装,并在more按钮下选择repair。 例如:Visual Studio Enterprise 2019安装。

其他回答

就我而言,

我意识到远程调试运行并消耗大部分资源。我真的不需要让应用程序64位,所以强制它为32位后,远程调试没有运行,执行速度更快。

我最终通过修改本地IIS配置来修复(或至少改进了很多)这个问题:

打开IIS配置 单击进入应用程序池 右键单击每个池并打开高级配置 确保“Enable 32 bits apps”设置为TRUE 启动模式设置为always waysrunning

希望这对某些人有所帮助,因为我开始疯狂地试图修复缓慢的调试问题

关闭intelliTrace为我解决了这个问题。

在Visual Studio中,工具->选项-> IntelliTrace

然后,取消选中“启用IntelliTrace”复选框。

如果有人注意到这种行为超出了左域,请检查以确保在web.config中没有设置任何断点。我一定是用鼠标随意点击设置了一个,它真的减慢了所有的调试操作。

清除缓存等使用选项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”