Ber*_*hus 488 asp.net-mvc cassini visual-studio iis-express visual-studio-2012
我的智慧结束了.Visual Studio 通常很难调试,或者只是简单地加载("启动而不调试")我的ASP.NET MVC站点.并非总是如此:首先,项目将加载得很好而且速度很快,但是一旦加载速度变慢,它们总是会在此之后加载缓慢.我可以等待1-2分钟或更长时间.
我的设置:
我目前正在使用Visual Studio 2012 Express,但我在Visual Studio 2010 Express中也遇到了同样的问题.我的解决方案存储在网络驱动器上; 具体来说,如果重要的话,它的My Documents会重定向到网络驱动器.(它不应该.有时我的网站在此设置下加载速度非常快.)
我通常在Internet Explorer 9中加载,但在Firefox中也会出现同样的问题.
这可能发生在我工作的任何ASP.NET MVC项目中,它似乎围绕着DisplayTemplates,我的所有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.
Run Code Online (Sandbox Code Playgroud)
在上面,我有三个DisplayTemplates:"Contact","Location"和"StatusCode".似乎IIS每次调用displaytemplate时都会加载符号两次.因此,如果我显示一个包含100个条目的表,这些条目调用所有这三个displaytemplate,则加载600个单独的符号.
这也不是一个快速的操作.查看IIS生成的日志文件,每个符号加载大约需要200毫秒.因此,超长延迟.
我试过的:
My Docs\IISExpress文件夹,或修复/重新安装Visual Studio→问题可能会消失,但只有一段时间,然后才会回来.任何建议都表示赞赏.
要回答更多问题,是的,我的机器肯定有马力.令人愤怒的事情是,同样的项目,改变了NOTHING,有时可以非常快地加载,通常在我修复IIS Express并删除My Docs\IISExpress文件夹之后.最终会发生"某事",再次加载需要2分钟.我正在做的不是一个复杂的项目.没有外部库或依赖项,我的VS.NET没有任何附加组件.
值得注意的是,该机器具有Symantec Endpoint Protection,它具有造成严重破坏的历史.但是直接禁用它(成为管理员很好)并没有解决问题.
我现在有一个理论.我想这都是因为我正在关闭网络共享的重定向文件夹.当调试器经历了数百个"加载符号"行时,我停下来看看它在做什么.这是在我的代码中,加载我有的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'
Run Code Online (Sandbox Code Playgroud)
看起来Visual Studio 每次调用时都会重新编译我的displaytemplate ,这也是数百次.我的理论是Visual Studio编译文件,将其保存到网络共享,网络共享然后以某种方式在其上标记新的时间,然后Visual Studio认为文件已更改,因此Visual Studio再次重新编译它.但只有一个理论; 我真的不知道.
首先,显然我有脱机文件(这是办公室里的台式电脑;我不在乎).我明天要禁用,重启和重试.
另外,将我的项目按原样移动到本地C:修复它.它加载速度非常快.但这在工作环境中并不理想.我丢失了以前的版本,我的代码根本没有备份,除非我手动复制它,并且它不再与任何人共享.
如果涉及它,我可以将它从C来回复制到网络共享.每个页面加载等待两分钟会更烦人.
小智 625
以下是我在Visual Studio 2012中解决"慢符号加载"问题的方法:
转到工具 - >选项 - >调试 - >常规
选中"启用我的代码"旁边的复选标记.
转到工具 - >选项 - >调试 - >符号
单击"..."按钮,在本地计算机上的某处创建/选择一个新文件夹以存储缓存的符号.我将其命名为"符号缓存"并将其放在Documents - > Visual Studio 2012中.
单击"加载所有符号"并等待从Microsoft的服务器下载符号,这可能需要一段时间.请注意,"加载所有符号"按钮仅在调试时可用.
取消勾选"Microsoft Symbol Servers"旁边的复选标记,以防止Visual Studio远程查询Microsoft服务器.
单击"确定".
从现在开始,符号加载应该快得多.
请注意,如果对Microsoft程序集进行任何更改/下载,则可能需要再次返回"符号"对话框和"加载所有符号".
mok*_*oke 110
关闭intelliTrace为我解决了这个问题.
在Visual Studio中,工具 - >选项 - > IntelliTrace
然后,取消选中"启用IntelliTrace"复选框.

小智 78
这些都不适合我,但我在删除的符号上找到了一个断点.似乎2010年就是它.要查看这是否是您的问题,请执行debug-> windows-> breakpoints如果有任何内容,请删除它们.
桑德斯提到他检查了这一点,但在这个问题的解决方案中没有提到.也许是某些人的常识,但不是我们所有人.
小智 40
我删除了"Temporary ASP.NET Files"文件夹,我的localhost页面加载得到了显着改善.这是路径...%temp%\ Temporary ASP.NET Files \
小智 28
我遇到了同样的问题并尝试了上面的大部分决议.简单地删除缓存和临时文件最终会为我工作.
尝试删除这两个文件夹的内容:
C:\Users\\{UserName}\AppData\Local\Microsoft\WebsiteCache
Run Code Online (Sandbox Code Playgroud)
和
C:\Users\\{UserName}\AppData\Local\Temp (特别是iisexpress和Temporary ASP.NET Files文件夹).
通过将cmd文件添加到C:\Users\\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup具有以下内容的文件夹,可以将此设置为在登录到Windows时自动执行:
rmdir C:\Users\\{username}\AppData\Local\Microsoft\WebsiteCache /s /q
rmdir C:\Users\\{username}\AppData\Local\Temp /s /q
Run Code Online (Sandbox Code Playgroud)
rka*_*ano 28
你启用了FusionLog吗?
我的VisualStudio启动非常慢,打开解决方案并在开始调试时加载符号.它只在我的机器上很慢,但在其他机器上却没有.
FusionLog将大量日志内容写入磁盘.在我的案例中,只是在RegEdit上禁用它解决了所有问题.
这是注册表上的FusionLog密钥:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion
Run Code Online (Sandbox Code Playgroud)
检查ForceLog值(1启用,0禁用).
Ber*_*hus 25
我想我最终可能至少知道原因,但不是原因.当问题再次出现时,我注意到大量的"conhost.exe"进程孤立了.我会关闭Visual Studio,它们会保持开放状态.他们每个人的结束任务终于可靠地解决了这个问题.[希望]
(请注意,虽然Visual Studio使用它,但conhost.exe不是Visual Studio进程.因此,其他用户可能还有其他运行conhost.exe的应用程序.我知道我的机器不是我可以的原因安全地结束所有这些任务,但YMMV.)
至于为什么会这样?这似乎发生在我同时打开多个项目时,我倾向于经常这样做,即使我只是随时构建和调试其中一个项目.
编辑#1 - 不幸的是,这不是一个"银弹".它并不总是对我有用.通常,当事情变慢时,我只关闭所有Visual Studio会话,然后进入任务管理器并结束它的任何实例,conhost.exe,iisexpress.exe Microsoft.VisualStudio.Web.Host.exe和MSBuild.exe我可以找到.
通常,在那之后,当我重新启动我的项目时,它会快速加载.但不总是.
真的,我认为最好的做法可能是不在重定向的文件夹/网络共享上构建和调试代码.
编辑#2 - 两年后,在Visual Studio社区2013中,这仍然是一个问题,但我似乎至少找到了罪魁祸首任务:Explorer.exe.是的,谁知道.我结束那个任务的那一刻,bam,页面加载一秒钟.
如果我有一个Windows资源管理器文件浏览器打开我的重定向网络驱动器(这通常是我的代码所在的位置),似乎会出现此问题.关闭窗口是不够的,我必须杀死整个Explorer.exe任务.我只能猜到它在做什么......用文件句柄搞定?
我通常可以使用任务管理器来启动一个新的explorer.exe任务(我只能采取这么多alt-tabbing),并且Visual Studio将继续加载漂亮和快速.但是,如果我再次打开Windows资源管理器,它几乎总是回到超慢速.
因此,如果您有重定向的网络共享,请试一试.它肯定胜过当地的工作.
Tah*_*san 22
以上都是很好的解决方案,我尝试了所有这些,但在这里得到了解决方案,即
Debug -> Delete All Breakpoints
Run Code Online (Sandbox Code Playgroud)
DMa*_*n51 19
对我来说,它是IE 9.08.8112.16241.一旦我使用Firefox或Chrome,就没有F10或F11的缓慢调试.我不知道IE的问题是什么,但我正式鄙视现在使用它进行测试.
更新:我已关闭所有IE程序加载项,它已恢复全速.一次打开一个,发现LastPass(在我的情况下)是罪魁祸首.我想我毕竟不会责怪MS.
Kor*_*yem 14
对我来说,我实现了这个技巧,它通过在web.config中为编译标记添加以下两个属性,基本上大大提高了性能
<compilation ... batch="false" optimizeCompilations="true"> ... </compilation>
Run Code Online (Sandbox Code Playgroud)
batch ="false"有什么作用?
它通过仅编译已更改并需要重新编译的页面,使预编译更具选择性
optimizeCompilations究竟在做什么?资源
ASP.NET使用每个应用程序哈希代码,其中包括许多内容的状态,包括bin和App_Code文件夹以及global.asax.每当ASP.NET应用程序域启动时,它都会检查此哈希代码是否已从之前计算的更改.如果有,则整个codegen文件夹(编译和阴影复制的程序集处于活动状态)将被清除.
当启用此优化(通过optimizeCompilations ="true")时,哈希不再考虑bin,App_Code和global.asax.因此,如果这些更改我们不会消灭codegen文件夹.
参考:msdn上的编译元素
ark*_*nia 12
我也有调试执行性能问题,我尝试了很多调试器选项.在我的情况下,当我改变这个选项时实现了巨大的性能:
工具 - 选项 - 调试 - 输出窗口 - (常规输出设置 - 所有调试输出) - 关闭
sha*_*p00 12
在我的例子中,它是带有VS 2012的.NET Reflector Visual Studio扩展(版本8.3.0.93).每次跳过调试(F10)需要10秒.
在Visual Studio中,转到" 工具/扩展和更新..."并禁用.NET Reflector Visual Studio扩展.不要忘记重新启动Visual Studio.
tod*_*dmo 11
就我而言
Tools/Options/Debugging/General/Enable JavaScript debugging for ASP.NET (Chrome and IE)
Run Code Online (Sandbox Code Playgroud)
一旦我取消选中此项,我的调试开始时间从45-60秒下降到0-5秒.
Lar*_*rry 10
有一次,在断电后,每次遇到断点或抛出异常时,我都不得不面对同样的慢速问题.
我有一个模糊的记忆,"suo"文件(与"sln"解决方案文件在同一目录中)可能会被破坏并使一切变慢.

我删除了我的"suo"文件,一切都很好..suo文件删除是无害的,只是意味着重新创建我的Windows布局加上启动项目和一些其他非关键自定义.
Gee*_*nja 10
我也面临这个问题,下面是我执行的步骤,它始终适用于我:
花了一整天等待符号加载与龟速一样慢,混合和切换所有可能的组合:Just My Code,Caching symbols,Intellitrace,Just-In-Time,kill processes等.
我的解决方案实际上是禁用防病毒软件.是的,Windows Defender正在放慢我的项目启动速度!它将检查Visual Studio请求它们的所有dll并减慢整个符号加载过程.
我不得不说我们的机器有很好的规格来快速编译解决方案,所以这绝不是问题.我们在VS 2013 Ultimate中编码.
要清除高速缓存等使用选项
1&2; 用于设置/故障排除选项3和4,享受!
选项1:导航到 IIS express ,清除缓存和站点
Run Code Online (Sandbox Code Playgroud)cd "C:\Program Files (x86)\IIS Express\"
appcmd.exe list site /xml | appcmd delete site /inDel /S /F /Q %temp%- 清除 Userprofile Temp 文件夹。Del /S /F /Q %Windir%\Temp此外,清除您的临时文件%temp%并注销,或重新启动
这将清除 Windows 临时文件夹。这将删除所有网站,享受!
选项 2:删除/重新创建临时文件夹
rmdir C:\Users\\{username}\AppData\Local\Microsoft\WebsiteCache /s /qrmdir C:\Users\\{username}\AppData\Local\Temp /s /q选项3:来自 MSDN 的JMC(仅我的代码)选项
要在 Visual Studio 中启用或禁用仅我的代码,under Tools > Options (or Debug > Options) > Debugging > General, select or deselect Enable Just My Code.
选项4:配置 Visual Studio/禁用常见插件问题
更多的Visual Studio 设置 您还可以配置 Visual Studio 并禁用环境中的资源清除功能,不记得我从哪里得到的,但我很快会发布更多。
环境 -> 一般
| 归档时间: |
|
| 查看次数: |
285432 次 |
| 最近记录: |