asp.net mvc - tutorial - Отладка/загрузка Visual Studio очень медленно




how to create asp net mvc project in visual studio 2015 (20)

Аналогичная проблема потеряла половину моего дня!

Поскольку решение для моей проблемы отличалось от сказанного здесь, я собираюсь опубликовать его, чтобы он помог кому-то другому.

Мой был точкой останова. У меня была точка останова «Break at function» (т.е. вместо нажатия F9 на кодовой строке мы создаем их с использованием окна точек останова), который должен останавливаться в библиотечной функции вне моего проекта.

И я использовал «Use Intellisense для проверки имени функции » CHECKED. (Информация here .)

Это замедлилось как ад (запуск проекта с 2 секунд до 5 минут).

Удаление точки разлома решило ее навсегда.

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

Моя настройка:

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

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

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

Симптомы:

Система будет загружать мои символы сотни раз. В основном, следующее, но есть не менее 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.

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

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

Что я пробовал:

  • Debug или Release, это не имеет значения.
  • Перенос моего проекта на полную реализацию IIS на веб-сервере выполняется очень быстро, без проблем.
  • Cassini, IIS Express 7.5 и IIS Express 8.0 имеют проблемы.
  • Удалить все точки останова ничего не делает.
  • Clean Solution , или удаление .suo также ничего не делают.
  • Если я отремонтирую IIS Express или удалю папку 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'

Похоже, Visual Studio перекомпилирует мой displaytemplate каждый раз, когда он вызывается, что снова, сотни раз. Моя теория заключается в том, что Visual Studio компилирует файл, сохраняет его на сетевой ресурс, сетевой ресурс, а затем как-то печатает новое время на нем, а Visual Studio думает, что файл был изменен, и, таким образом, Visual Studio снова перекомпилирует его. Однако только теория; У меня действительно нет подсказки.

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

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

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


Быстрое и простое решение для тех, у кого нет большого отклонения от настроек VS по умолчанию.

Инструменты -> Параметры импорта и экспорта -> Да, сохраните мои текущие настройки -> Visual C #

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


В моем случае это был .NET Reflector Visual Studio Extension (версия 8.3.0.93) с VS 2012. Отладка занимала 10 секунд для каждого Step Over (F10).

В Visual Studio перейдите в Инструменты / Расширения и Обновления ... и отключите расширение Visual Reflector Visual Studio . Не забудьте перезапустить Visual Studio.


В моем случае это было

Tools/Options/Debugging/General/Enable JavaScript debugging for ASP.NET (Chrome and IE)

Как только я снял флажок, мой отладочный старт прошел от 45-60 секунд до 0-5 секунд.


В частичных представлениях также есть осложнения, когда на странице есть ошибка, которая не распознается немедленно. Как Model.SomeValue вместо Model.ThisValue. Это может не подчеркнуть и вызвать проблемы при отладке. Это может быть настоящей болью.


Вот как я решил проблему «медленной загрузки символов» в Visual Studio 2012:

  • Перейдите в Инструменты -> Параметры -> Отладка -> Общие

  • ПРОВЕРЬТЕ галочку рядом с надписью «Включить только мой код».

  • Перейдите в Инструменты -> Параметры -> Отладка -> Символы

  • Нажмите кнопку «...» и создайте / выберите новую папку где-нибудь на своем локальном компьютере для хранения кешированных символов. Я назвал свое «кэширование символов» и поместил его в «Документы» -> «Visual Studio 2012».

  • Нажмите «Загрузить все символы» и дождитесь загрузки символов с серверов Microsoft, что может занять некоторое время. Обратите внимание: кнопка «Загрузить все символы» доступна только при отладке.

  • UNCHECK отметьте галочкой рядом с «Microsoft Symbol Servers», чтобы предотвратить удаленную проверку Visual Studio серверами Microsoft.

  • Нажмите «ОК».

С этого момента загрузка символов должна быть намного быстрее.

Обратите внимание: если вы внесете какие-либо изменения / загрузки в сборки Microsoft, вам может потребоваться снова вернуться в диалоговое окно «Символы» и «Загрузить все символы».


Выше были все хорошие решения, и я попробовал их все, но получил решение here , что

Debug -> Delete All Breakpoints

Для меня это был IE 9.08.8112.16241. Как только я использовал Firefox или Chrome, не было вялой отладки с F10 или F11. Я не знаю, что проблема с IE, но я официально презираю ее использовать для тестирования сейчас.

Обновление: я отключил все надстройки программы IE, и он вернулся на полную скорость. Поворачивая их по одному, выяснилось, что LastPass (в моем случае) был виновником. Наверное, я не обвиняю MS в конце концов.


Если кто-то замечает это поведение, выходящее из левого поля, убедитесь, что у вас нет контрольных точек, установленных в web.config. Я, должно быть, установил одно с помощью беспризорного щелчка мыши, и это действительно замедлило все операции отладки.


Моя медленная проблема VS была устранена, отключив ссылку браузера


Одна вещь, которая работала для меня после выполнения всего вышеперечисленного:
В окне Threads (Debug-> Windows-> Threads) установите Group by на None. Это можно сделать только при отладке.

Это оказало влияние даже после закрытия этого окна.


Однажды, после отключения питания, мне приходилось сталкиваться с такой же проблемой медленности каждый раз, когда ударяли точку останова или исключалось исключение.

У меня было смутное воспоминание о том, что файл suo (в том же каталоге, что и файл решения sln) может быть поврежден и замедлить работу.

Я удалил свои файлы «suo», и все было в порядке. Удаление файлов .suo является безобидным и подразумевает только воссоздание моего макета окон, а также начальный проект и несколько других некритических настроек.


Откройте папку решений в проводнике Windows, закройте визуальную студию, удалите файл .suo из обозревателя Windows.

Теперь откройте проект в визуальной студии, надеюсь, отладчик будет прикреплен / отсоединен быстро.


Очистка кеша символов работала для меня.

См .: панель меню / Инструменты / Параметры / Отладка / Символы / Пустой символ


Проведя весь день, ожидая, что символы будут загружаться так же медленно, как скорость черепахи, смешивание и переключение между всеми возможными комбинациями: Just My Code, символы кэширования , Intellitrace , Just-In-Time, процессы убийства и т. Д.

Моим решением было фактически отключить антивирус . Да, Windows Defender замедлял мой запуск проекта! Он будет проверять все DLL, как запросила их Visual Studio, и замедлила весь процесс загрузки символов.

Я должен сказать, что наши машины имеют отличные спецификации для компиляции решения очень быстро, так что это никогда не было проблемой. Мы кодируем VS 2013 Ultimate.


У меня были проблемы с исполнением и с отладкой, и я попробовал очень много вариантов отладчика. В моем случае огромная производительность, достигнутая при изменении этих параметров:

Инструменты - Параметры - Отладка - Окно вывода - (Общие настройки вывода - Весь вывод отладки) - ВЫКЛ


Я думаю, что, возможно, я, наконец, по крайней мере знаю причину, хотя не причина. Когда проблема возникла снова, я заметил, что тонны процессов «conhost.exe» остались сиротами. Я бы закрыл Visual Studio, и они останутся открытыми. Окончательная задача по каждому из них, наконец, надежно разрешила проблему. [с надеждой]

(Просто обратите внимание, что conhost.exe не является процессом Visual Studio, хотя Visual Studio использует его. Таким образом, у других пользователей есть другие приложения, которые запускают conhost.exe. Я знаю, что моя машина не работает, поэтому я могу безопасно завершать задачу всех, но YMMV.)

А почему это происходит? Это происходит, когда я открываю сразу несколько проектов, что я часто делаю, хотя я только собираю и отлаживаю один из них в любое время.

Редактировать # 1 - Это не «серебряная пуля», к сожалению. Это не всегда работает для меня. Как правило, когда все происходит медленно, я просто закрываю все мои сеансы Visual Studio, а затем перехожу в диспетчер задач и заканчиваю любой его экземпляр, conhost.exe, iisexpress.exe. Microsoft.VisualStudio.Web.Host.exe и MSBuild.exe Я могу найти.

Как правило, после этого, когда я перезапускаю проект, он будет загружаться быстро. Но не всегда.

На самом деле, я думаю, что лучший способ действий - это, вероятно, не создавать и отлаживать код с перенаправленной папки / сетевого ресурса.

Редактировать # 2 - Два года спустя, и это все еще проблема для меня в Visual Studio Community 2013, но я действительно, по крайней мере, нашел задачу виновника: Explorer.exe . Да, кто знал. В тот момент, когда я заканчиваю эту задачу, bam, страница загружается за одну секунду.

Если у меня есть браузер файлов Windows Explorer, открытый для моего перенаправленного сетевого диска (который часто бывает с моего кода), эта проблема возникает. Закрытие окна недостаточно, мне нужно убить всю задачу Explorer.exe. Я мог только догадываться, что он делает ... с орехами с файловыми ручками?

Обычно я могу использовать диспетчер задач, чтобы запустить новую задачу explorer.exe (я могу использовать только много Alt-Tabbing), и Visual Studio будет продолжать загружаться красиво и быстро. Но если я снова открою проводник Windows, он почти всегда вернется к супер-медленному моменту.

Итак, если у вас есть перенаправленная сетевая доля, сделайте снимок. Он уверен, что работает на местном уровне.


Я не знаю, есть ли у вас эта проблема, но я отлаживаю сайты в Visual Studio, присоединяя отладчик к самому процессу, а не позволяя VS делать это для меня, и я нашел, что он значительно улучшил время. Я использую расширение для VS, называемое AttachTo, и у меня есть небольшая статья о том, как я использую его here .

Надеюсь, это поможет.


Я также столкнулся с этой проблемой, ниже - шаги, которые я выполняю, и это работает для меня всегда:

  • Удаление файла .suo решения.
  • Удаление временных файлов ASP.NET (вы можете найти его в % WINDOW% \ Microsoft.NET \ Framework \\ Временные файлы ASP.NET )
  • Удаление всех контрольных точек в приложении.

Я удалил папку «Временные файлы ASP.NET», и моя загрузка на localhost значительно улучшилась. Вот путь ...% temp% \ Временные файлы ASP.NET \





cassini