Отладка / загрузка Visual Studio очень медленная

Я в конце. Visual Studio - этоtypically мучительно медленно отлаживать или просто загружать («запускать без отладки») мои сайты ASP.NET MVC. Не всегда: сначала проекты загружаются красиво и быстро, но как только они загружаются медленно, после этого они всегда будут загружаться медленно. Я мог бы ждать 1-2 минуты или больше.

My setup:

Я используюVisual Studio 2012 Expressв настоящее время, но у меня была такая же проблема и в Visual Studio 2010 Express. Мое решение хранится на сетевом диске; в частности, мои документы перенаправляются на сетевой диск, если это имеет значение. (Это не должно быть. В некоторых случаях мой сайт загружается очень быстро при такой настройке.)

Обычно я загружаю в Internet Explorer 9, но та же проблема возникает в Firefox.

Это может произойти в любом проекте ASP.NET MVC, над которым я работаю, и, кажется, вращается вокруг наличия DisplayTemplates, что делают все мои проекты ASP.NET MVC. И это все C # и Razor, если это имеет значение.

Symptoms:

Система загрузит мои символыhundreds раз. По существу, следующее, но есть как минимум 300 таких строк, каждая из которых имеет несколько отличающиеся файлы DLL для одного и того же CSHTML:

'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.

В приведенном выше описании я получил три шаблона DisplayTemplate: «Контакт», «Расположение» и «StatusCode». Похоже, что IIS загружает символы дважды каждый раз, когда вызывается шаблон отображения. Таким образом, если я отображаю таблицу из 100 записей, которая вызывает все три из этих шаблонов отображения, то загружается 600 отдельных символов.

Это также не быстрая операция. При просмотре файлов журнала, которые генерирует IIS, для загрузки каждого символа требуется около 200 мкс. Таким образом, супер-длинные задержки.

What I've Tried:

Debug or Release version, it doesn't matter. Putting my project on a full IIS implementation on a web server runs it super fast with no problems. Cassini, IIS Express 7.5, and IIS Express 8.0 all have the problem. Delete All Breakpoints does nothing. Clean Solution, or deleting the .suo also do nothing. If I repair IIS Express, or delete the My Docs\IISExpress folder, or repair/reinstall Visual Studio → the issue MAY go away, but only for a while, before it comes right back.

Любой совет вообще приветствуется.

Чтобы ответить на дополнительные вопросы, да, моя машина определенно имеет мощность. Раздражает то, что один и тот же проект, с НИЧЕГО измененным, иногда может загружаться очень и очень быстро, обычно после того, как я исправляю IIS & # xA0; 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'

Похоже, Visual Studio перекомпилирует мою displaytemplateevery time это называется, что снова сотни раз. Моя теория заключается в том, что Visual Studio компилирует файл, сохраняет его на общем сетевом ресурсе, затем сетевой ресурс каким-то образом устанавливает новое время, и Visual Studio думает, что файл изменился, и, таким образом, Visual Studio перекомпилирует его снова. Только теория, хотя; Я действительно понятия не имею.

Во-первых, очевидно, у меня есть автономные файлы (это настольный компьютер в офисе; мне было все равно). Я собираюсь отключить, перезагрузить компьютер и повторить попытку завтра.

Плюс, перемещение моего проекта, как есть, в локальный C: исправляет это. Он загружается очень быстро. Но это не идеально в рабочей среде. Я теряю предыдущие версии, мой код вообще не копируется, если я не копирую его вручную, и он больше никому не передается.

Я могу обойтись копированием его назад и вперед из C на общий сетевой ресурс, если это произойдет. Гораздо раздражает ожидание двух минут загрузки каждой страницы.

Ответы на вопрос(30)

Ваш ответ на вопрос