Я в конце концов. 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: «Контакт», «Расположение» и «StatusCode». Похоже, что IIS загружает символы дважды каждый раз, когда вызывается шаблон отображения. Таким образом, если я отображаю таблицу из 100 записей, которая вызывает все три из этих шаблонов отображения, то загружается 600 отдельных символов.
Это тоже не быстрая операция. Просматривая файлы журнала, которые генерирует IIS, для загрузки каждого символа требуется около 200 мс. Таким образом, супер-длинные задержки.
Что я пробовал:
- Отладка или выпуск версии, это не имеет значения.
- Помещение моего проекта на полную реализацию IIS на веб-сервере запускает его очень быстро, без проблем.
- Cassini, IIS Express 7.5 и IIS Express 8.0 имеют проблемы.
- Удалить все точки останова ничего не делает.
- Чистый раствор или удаление .suo тоже ничего не делают.
- Если я восстановлю IIS Express, или удалю
My Docs\IISExpress
папку, или восстановлю / переустановлю Visual Studio → проблема МОЖЕТ исчезнуть, но только на некоторое время, прежде чем она вернется обратно.
Любой совет вообще приветствуется.
Чтобы ответить на дополнительные вопросы, да, моя машина определенно имеет мощность. Раздражает то, что один и тот же проект, НИЧЕГО не измененный, иногда может загружаться очень и очень быстро, обычно после того, как я чиню 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 на общий сетевой ресурс, если это произойдет. Гораздо неприятнее ждать две минуты для каждой загрузки страницы.
Ответы:
Вот как я решил проблему «медленной загрузки символов» в Visual Studio 2012:
Зайдите в Инструменты -> Параметры -> Отладка -> Общие
Проверьте флажок рядом с «Включить только мой код».
Перейдите в Инструменты -> Параметры -> Отладка -> Символы
Нажмите кнопку «...» и создайте / выберите новую папку на локальном компьютере для хранения кэшированных символов. Я назвал мой «Кэширование символов» и поместил его в Documents -> Visual Studio 2012.
Нажмите «Загрузить все символы» и дождитесь загрузки символов с серверов Microsoft, что может занять некоторое время. Обратите внимание, что кнопка «Загрузить все символы» доступна только во время отладки.
Снимите флажок рядом с «Серверы Microsoft Symbol», чтобы запретить Visual Studio удаленно запрашивать серверы Microsoft.
Нажмите «ОК».
Отныне загрузка символов должна быть намного быстрее.
Обратите внимание, что при внесении каких-либо изменений / загрузок в сборки Microsoft вам может потребоваться вернуться в диалоговое окно «Символы» и снова «Загрузить все символы».
источник
Отключение intelliTrace исправило это для меня.
В Visual Studio Инструменты -> Параметры -> IntelliTrace
Затем снимите флажок «Включить IntelliTrace».
источник
Ничего из этого не помогло мне, но я нашел точку останова на удаленном символе. Кажется, 2010 висел на нем. Чтобы увидеть, если это ваша проблема, выполните debug-> windows-> точки останова, если они есть, просто удалите их.
Сондерс упомянул, что проверил это, но это не было упомянуто в решениях этой проблемы. Возможно, это общеизвестно для некоторых, но не для всех нас.
источник
Я удалил папку «Temporary ASP.NET Files», и загрузка моей локальной страницы значительно улучшилась. Вот путь ...% temp% \ Временные файлы ASP.NET \
источник
Вы включили FusionLog?
Мой VisualStudio очень медленно запускался, открывал решение и загружал символы при запуске отладки. Это было медленно только на моей машине, но не на других машинах.
FusionLog записывает тонны журналов на диск. Просто отключив его на RegEdit, я решил все.
Это ключ FusionLog в реестре:
Проверьте значение ForceLog (1 включено, 0 отключено).
источник
FusionLog
давно включил и забыл его отключить. Теперь отладкаASP.NET MVC
приложения происходит намного быстрее. Слава Богу и @rkawano. :)Я столкнулся с той же проблемой и перепробовал большинство из вышеперечисленных решений. Простое удаление кеша и временных файлов работает на меня.
Попробуйте удалить содержимое этих двух папок:
а также
C:\Users\\{UserName}\AppData\Local\Temp
(в частности, папки iisexpress и Temporary ASP.NET Files).Это можно настроить так, чтобы это происходило автоматически при входе в Windows путем добавления файла cmd в
C:\Users\\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
папку со следующим содержимым:источник
Я думаю, что наконец-то смогу узнать причину, но не причину. Когда проблема начала возникать снова, я заметил, что тонна процессов "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 . Да, кто знал. В тот момент, когда я заканчиваю эту задачу, бац, страница загружается за одну секунду.
Если у меня открыт файловый браузер Windows Explorer для моего перенаправленного сетевого диска (что часто происходит именно там, где находится мой код), эта проблема, похоже, возникает. Закрытие окна не достаточно, я должен убить всю задачу Explorer.exe. Я мог только догадываться, что он делает ... сходя с ума с файловыми ручками?
Обычно я могу использовать диспетчер задач, чтобы запустить новую задачу explorer.exe (я могу взять только столько вкладок alt-tabbing), и Visual Studio продолжит загружаться красиво и быстро. Но если я снова открою Windows Explorer, он почти всегда возвращается к супер-медленному.
Итак, если у вас есть перенаправленный сетевой ресурс, попробуйте. Это наверняка лучше, чем работать на месте.
источник
Выше приведены все хорошие решения, и я попробовал все из них, но получил решение здесь , которое заключается в
источник
Для меня это был IE 9.08.8112.16241. Как только я использовал Firefox или Chrome, не было медленной отладки с F10 или F11. Я не знаю, в чем проблема с IE, но сейчас я официально презираю его использование для тестирования.
Обновление: я отключил все надстройки программы IE, и он вернулся на полную скорость. Включение их по одному показало, что виновником был LastPass (в моем случае). Я думаю, что я не могу обвинить MS в конце концов.
источник
Для меня я реализовал этот совет, который существенно улучшил производительность, добавив следующие два атрибута в тег компиляции в web.config
Что делает batch = "false"?
Что именно делает optimizeCompilations? Источник
Ссылка: Элемент компиляции на MSDN
источник
У меня были проблемы с производительностью при отладке, и я испробовал очень много вариантов отладчика. В моем случае огромная производительность достигается при изменении этих параметров:
Инструменты - Параметры - Отладка - Окно вывода - (Общие настройки вывода - Все выходные данные отладки) - ВЫКЛ
источник
В моем случае это было расширение Visual Studio .NET Reflector (версия 8.3.0.93) с VS 2012. Отладка занимала 10 секунд для каждого шага более (F10).
В Visual Studio перейдите в раздел Инструменты / Расширения и обновления ... и отключите расширение Visual Studio Reflector . Не забудьте перезапустить Visual Studio.
источник
У меня были проблемы с медленной отладкой Visual Studio при отладчике "Native Code" был включен . Попробуйте отключить это.
На «Visual Studio 2012» перейдите по ссылке:
Надеюсь, поможет.
Похожие вопросы: 1 , 2
источник
В моем случае это было
Как только я снял этот флажок, мой отладочный запуск изменился с 45-60 секунд до 0-5 секунд.
источник
Однажды, после отключения электричества, мне приходилось сталкиваться с одной и той же проблемой медленности каждый раз, когда была достигнута точка останова или было сгенерировано исключение.
Я смутно помнил, что файл «suo» (в той же директории, что и файл решения «sln») может быть поврежден и все замедляется.
Я удалил мои файлы "suo" и все было в порядке. Удаление файлов .suo безвредно и подразумевает только воссоздание моего макета Windows, а также запуск проекта и несколько других некритических настроек.
источник
.vs
папку в более поздних версиях Visual Studio. Удалить это.Я также столкнулся с этой проблемой, ниже приведены шаги, которые я выполняю, и это работает для меня всегда:
источник
Я не знаю, сохраняется ли у вас эта проблема, но я отлаживаю сайты в Visual Studio, подключив отладчик к самому процессу, а не позволяя VS сделать это для меня, и я обнаружил, что это значительно улучшило время. Я использую расширение для VS под названием AttachTo, и у меня есть небольшая статья о том, как я использую его здесь .
Надеюсь, это поможет.
источник
Моя медленная проблема VS была решена путем отключения ссылки на браузер
источник
Если кто-то замечает, что такое поведение выходит из левого поля, убедитесь, что в web.config не установлены точки останова. Я, должно быть, установил один случайным щелчком мыши, и это действительно замедлило все операции отладки.
источник
Потратив весь день на ожидание загрузки символов, столь же медленных, как скорость черепахи, смешивание и переключение между всеми возможными комбинациями: просто мой код, символы кэширования , Intellitrace , Just-In-Time, процессы уничтожения и т. Д.
Мое решение было на самом деле отключить антивирус . Да, Защитник Windows замедлял запуск моего проекта! Это проверило бы все dll, поскольку Visual Studio запросил их, и замедлило весь процесс загрузки символов.
Я должен сказать, что у наших машин есть отличные технические характеристики для быстрой компиляции решения, так что это никогда не было проблемой. Мы кодируем в VS 2013 Ultimate.
источник
Очистка кеша символов работала для меня.
См. Строка меню / Инструменты / Параметры / Отладка / Символы / Пустой кэш символов
источник
Подобная проблема пропала впустую лучшую половину моего дня!
Поскольку решение моей проблемы отличалось от того, что было сказано здесь, я опубликую его, чтобы оно могло помочь кому-то еще.
Моя была точка останова. У меня была точка останова «Break at function» (т. Е. Вместо нажатия клавиши F9 в строке кода, мы создаем их с помощью окна точек останова), которая должна останавливаться в функции библиотеки вне моего проекта.
И у меня было «Использовать Intellisense для проверки имени функции » ПРОВЕРЕНО. (Информация здесь .)
Это замедлилось по сравнению с адом (запуск проекта с 2 секунд до 5 минут).
Удаление точки останова решило это навсегда.
источник
После всего вышесказанного у меня сработало одно:
в окне «Потоки» («Отладка» -> «Windows» - «Потоки») установите для параметра «Группировать» значение «Нет». Это можно сделать только во время отладки.
Это оказало влияние даже после закрытия этого окна.
источник
В Visual Studio:
Сервис -> Параметры -> Отладка -> Символы
Выберите «Только указанные модули». Нажмите ссылку «указать модули» и добавьте пустой модуль (нажмите кнопку «Новый документ» и нажмите «ОК»).
источник
Откройте папку решения в проводнике Windows, закройте Visual Studio, удалите файл .suo из проводника Windows.
Теперь откройте проект в визуальной студии, надеюсь, отладчик будет быстро подключен / отключен.
источник
Для меня это были условные контрольные точки. Те, кажется, действительно замедляют ход событий.
источник
Перейдите к переменным среды и найдите ключ _NT_SYMBOL_PATH.
Удали это.
Вуаля, работал как шарм.
источник
value == symsrv*symsrv.dll*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols
до сих пор нет кости!Для меня проблемой была функция «Ссылка на браузер», которая очень тяжелая, если у вас есть несколько вкладок, открытых для одного проекта!
Потому что каждый раз, когда мы запускаем проект, он открывает новую вкладку со связью браузера.
Просто закройте все вкладки, связанные с проектом, и оставьте только одну открытую!
Это бесплатная мгновенно визуальная студия! Это магия ! ;-)
источник
Быстрое и простое решение для тех, у кого нет особых отклонений от настроек VS по умолчанию.
Сервис -> Импорт и экспорт настроек -> Да, сохранить мои текущие настройки -> Visual C #
Я уверен, что вышеупомянутое решение будет работать с другими настройками по умолчанию. В моем случае что-то испортилось с моими настройками загрузки символов, но я не смог это исправить, хотя попробовал довольно много из предложенных решений.
источник
Убедитесь, что вы не открывали Visual Studio в режиме администратора
Я столкнулся с этой проблемой и должен был работать в обычном режиме.
источник