Debugowanie / ładowanie programu Visual Studio odbywa się bardzo powoli


505

Jestem skończony. Program Visual Studio jest zwykle bardzo powolny do debugowania lub zwykłego ładowania („rozpocznij bez debugowania”) moich witryn ASP.NET MVC. Nie zawsze: na początku projekty ładują się ładnie i szybko, ale gdy ładują się powoli, potem zawsze ładują się wolno. Mogę czekać 1-2 minuty lub dłużej.

Moja konfiguracja:

Obecnie używam Visual Studio 2012 Express , ale miałem ten sam problem w Visual Studio 2010 Express. Moje rozwiązanie jest przechowywane na dysku sieciowym; w szczególności Moje Dokumenty są przekierowywane na dysk sieciowy, jeśli ma to znaczenie. (Nie powinno. Są chwile, w których moja strona ładuje się bardzo szybko przy tej konfiguracji).

Zwykle ładuję się w przeglądarce Internet Explorer 9, ale ten sam problem występuje w przeglądarce Firefox.

Może się to zdarzyć w każdym projekcie ASP.NET MVC, nad którym pracuję, i wydaje się, że obraca się wokół posiadania DisplayTemplates, co robią wszystkie moje projekty ASP.NET MVC. I to wszystko C # i Razor, jeśli to miało znaczenie.

Objawy:

System załaduje moje symbole setki razy. Zasadniczo następujące, ale istnieje co najmniej 300 takich wierszy, każdy z bardzo nieznacznie różnymi plikami DLL dla tych samych 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.

Powyżej mam trzy DisplayTemplates: „Kontakt”, „Lokalizacja” i „StatusCode”. Wygląda na to, że IIS ładuje symbole dwa razy za każdym razem, gdy wywoływany jest panel informacji. Tak więc, jeśli wyświetlam tabelę zawierającą 100 wpisów, która wywołuje wszystkie trzy powyższe przykłady, to jest ładowanych 600 osobnych symboli.

To też nie jest szybka operacja. Przeglądając pliki dziennika generowane przez IIS, ładowanie każdego symbolu zajmuje około 200 ms. Zatem bardzo długie opóźnienia.

Co próbowałem:

  • Wersja debugowania lub wydania nie ma znaczenia.
  • Umieszczenie mojego projektu w pełnej implementacji IIS na serwerze WWW działa bardzo szybko, bez żadnych problemów.
  • Wszystkie problemy mają Cassini, IIS Express 7.5 i IIS Express 8.0.
  • Usuń wszystkie punkty przerwania nic nie robi.
  • Czyste rozwiązanie lub usunięcie pliku .suo również nie rób nic.
  • Jeśli naprawię IIS Express, usunę My Docs\IISExpressfolder lub naprawię / ponownie zainstaluję Visual Studio → problem MOŻE zniknąć, ale tylko na chwilę, zanim wróci.

Wszelkie porady są mile widziane.

Aby odpowiedzieć na więcej pytań, tak, moja maszyna zdecydowanie ma moc. Irytujące jest to, że ten sam projekt, ze zmienionymi NICI, może czasami ładować się bardzo szybko, zwykle po naprawie IIS Express i usunięciu My Docs\IISExpressfolderu. W końcu „coś” się dzieje i ładowanie ponownie trwa do 2 minut. To, nad czym pracuję, nie jest skomplikowanym projektem. Brak zewnętrznych bibliotek i zależności, a mój VS.NET nie ma żadnych dodatków.

Warto zauważyć, że ten komputer ma program Symantec Endpoint Protection, który w przeszłości powodował spustoszenie. Ale całkowite wyłączenie go (dobrze być administratorem) nie rozwiązało problemu.

W tym momencie mam teorię. Myślę, że to wszystko dlatego, że pracuję nad przekierowanym folderem z udziału sieciowego. Gdy debugger przechodził przez setki linii „załadowanych symboli”, zatrzymałem się, aby zobaczyć, co robi. To było w moim kodzie, ładowałem DisplayTemplate, który miałem. Wchodząc do szablonu, wyjdź tak:

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'

Wygląda na to, że Visual Studio rekompiluje mój szablon informacji za każdym razem, gdy jest wywoływany, czyli setki razy. Moja teoria jest taka, że ​​Visual Studio kompiluje plik, zapisuje go w udziale sieciowym, udział sieciowy następnie w jakiś sposób zaznacza nowy czas, a następnie Visual Studio myśli, że plik się zmienił, a zatem Visual Studio ponownie go kompiluje. Ale tylko teoria; Naprawdę nie mam pojęcia.

Po pierwsze, najwyraźniej mam pliki offline (jest to komputer stacjonarny w biurze; nie obchodzi mnie to mniej). Wyłączę, uruchomię ponownie i spróbuj ponownie jutro.

Dodatkowo przeniesienie mojego projektu do lokalnego C: naprawia go. Ładuje się bardzo szybko. Ale to nie jest idealne w środowisku pracy. Tracę poprzednie wersje, mój kod nie jest w ogóle tworzony, chyba że go ręcznie skopiuję i nie jest już udostępniany nikomu.

Mogę sobie poradzić z kopiowaniem go tam iz powrotem z C do udziału sieciowego, jeśli chodzi o to. O wiele bardziej irytujące jest czekanie dwóch minut na każde ładowanie strony.


Mam wiele pytań: co z maszyną, na której je uruchomiłeś? Czy ma wystarczającą moc do tego, co próbujesz zrobić? Czy masz jakieś wtyczki innych firm? Jaki masz program antywirusowy?
Fickle Panther

1
Zaktualizowałem moje pytanie o więcej informacji.
Ber'Zophus

Usunięcie plików offline wydawało się być naprawą. Przez jakiś czas działało świetnie, a potem problem wrócił. Ale mam inną możliwą odpowiedź. Aktualizacja mojego rozwiązania.
Ber'Zophus,

Po drugie, pytanie antywirusowe, miałem poważne problemy z działaniem ThreatFire. Tymczasowe wyłączenie przyspieszyło dla mnie debuger przynajmniej setki razy. Wyłączenie mojego głównego AV (Avast!) Tylko pomogło.
Jon Coombs

@JohnSaunders Czy próbowałeś uruchomić go w trybie administratora ?: stackoverflow.com/questions/36322440/…
Robert Oschler

Odpowiedzi:


650

Oto jak rozwiązałem problem „wolnego ładowania symbolu” w Visual Studio 2012:

  • Przejdź do Narzędzia -> Opcje -> Debugowanie -> Ogólne

  • Zaznacz pole wyboru obok „Włącz tylko mój kod”.

  • Przejdź do Narzędzia -> Opcje -> Debugowanie -> Symbole

  • Kliknij przycisk „...” i utwórz / wybierz nowy folder gdzieś na komputerze lokalnym, aby przechowywać symbole w pamięci podręcznej. Nazwałem mój „buforowanie symboli” i umieściłem go w Dokumentach -> Visual Studio 2012.

  • Kliknij „Załaduj wszystkie symbole” i poczekaj, aż symbole zostaną pobrane z serwerów Microsoft, co może chwilę potrwać. Pamiętaj, że przycisk Załaduj wszystkie symbole jest dostępny tylko podczas debugowania.

  • Usuń zaznaczenie pola wyboru obok opcji „Microsoft Symbol Servers”, aby uniemożliwić programowi Visual Studio zdalne wysyłanie zapytań do serwerów Microsoft.

  • Kliknij OK".

Odtąd ładowanie symboli powinno być znacznie szybsze.

Pamiętaj, że jeśli dokonasz zmian / pobrań do zestawów Microsoft, może być konieczne powrót do okna dialogowego Symbole i ponowne załadowanie wszystkich symboli.


31
Obawiam się, że nie ma dla mnie poprawki. To byłoby dobre rozwiązanie dla tych, którzy obracają się wokół problemów z symbolami Microsoft. Niestety, mój problem wydaje się dotyczyć moich własnych symboli. Symbole te są już buforowane lokalnie i z jakiegoś powodu skompilowano setki kafelków przy jednym załadowaniu strony.
Ber'Zophus

8
dziękuję za tę wskazówkę Jeden problem, który mam tutaj jest przycisk ładowania wszystkich symboli jest dla mnie wyłączony jakieś pomysły?
Chris McGrath

14
@ChrisMcGrath wypróbuj ten link social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/… . Btw dzięki za świetną odpowiedź
tabele Bobby

16
nawet po wykonaniu tych kroków przycisk „Załaduj wszystkie symbole” jest ukryty i nie mogę tego kliknąć. Co mam teraz zrobić? Korzystam z VS Express 2012.
Himanshu Aggarwal

86
Oto rozwiązanie dla tych, którzy mają wyłączony przycisk Załaduj wszystkie symbole: Przycisk jest dostępny tylko podczas debugowania.
Gwynnbleid1

114

Wyłączenie intelliTrace naprawiło to dla mnie.

W Visual Studio, Narzędzia -> Opcje -> IntelliTrace

Następnie usuń zaznaczenie pola wyboru „Włącz IntelliTrace”.

Wyłącz IntelliTrace w Visual Studio 2012


2
Miałem ten problem, przechodząc przez jeden z moich testów jednostkowych. Zajęło około 300 sekund przy włączonym Intellitrace i około 14 sekund po wyłączeniu. Ta poprawka naprawdę działała dla mnie.
Paul Bullivant

2
Poprawiłem swój start z 25 sekund do 6. Myślę, że to bardzo pomogło, ponieważ uruchamiałem dużo własnego kodu podczas uruchamiania aplikacji
James Ellis-Jones

2
Cholera ... Od 1 minuty do 10 sekund. Jest domyślnie zaznaczony w VS2012 Ultimate. Uważajcie
Kevin Cloet,

7
Nie można znaleźć Intellitrace w Narzędzia => Opcje. .. mam vsComunity 2015
shireef khatab

8
W Visual Studio 2015 Intellitrace istnieje tylko w wersji VS 2015 Enterprise Edition.
HK1

78

Nic z tego nie działało, ale znalazłem punkt przerwania na symbolu, który został usunięty. Wygląda na to, że 2010 się na tym trzymał. Aby sprawdzić, czy to jest twój problem, wykonaj debugowanie-> okna-> punkty przerwania. Jeśli takie istnieją, po prostu je usuń.

Saunders, wspomniany, sprawdził to, ale nie zostało to wspomniane w rozwiązaniach tego problemu. Może powszechna wiedza dla niektórych, ale nie dla wszystkich.


5
Nagle zacząłem mieć ten problem w VS2010 i rzeczywiście był to jeden z moich punktów przerwania, który go spowodował. Gdy tylko wyczyściłem punkty przerwania, znów stało się to szybkie.
David Airapetyan,

3
Wow..VS2012 czołgał się, 5 minut po prostu zbudować prosty projekt. Wyczyściłem wszystkie punkty przerwania i znów błyskawicznie się rozjaśnia, dzięki !!
QFDev

1
Po przeczytaniu tego i podążaniu za tym, co powiedziałeś, znalazłem punkt przerwania, który jakoś został umieszczony w kodzie XML jednego z moich plików encji edmx. Jesteś mężczyzną / kobietą.
JB06

Wielkie dzięki. To rozwiązało mój problem z bardzo niską wydajnością VS2010.
Vaibhav Patle

2
Działa to również w przypadku problemu wolnego debugowania, który miałem w Visual Studio 2015.
purplecat

41

Usunąłem folder „Tymczasowe pliki ASP.NET”, a ładowanie mojej strony localhost znacznie się poprawiło. Oto ścieżka ...% temp% \ Tymczasowe pliki ASP.NET \


9
C: \ Users \ {USER_NAME} \ AppData \ Local \ Temp to ścieżka, a folder „AppData” to folder ukryty
Shiva Naru

2
Znalazłem tutaj 1 GB starego badziewia ... usuń to wszystko, a VS działa trochę lepiej. :)
RitchieD

29

Czy masz włączony FusionLog?

Mój VisualStudio bardzo wolno uruchamiał się, otwierał rozwiązanie i ładował symbole podczas rozpoczynania debugowania. To było powolne tylko na moim komputerze, ale nie na innych komputerach.

FusionLog zapisuje mnóstwo logów na dysk. Wyłączenie go w RegEdit rozwiązało wszystko w moim przypadku.

To jest klucz FusionLog w rejestrze:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion

Sprawdź wartość ForceLog (1 włączone, 0 wyłączone).


1
Hmmm ... bardzo ładna odpowiedź. Byłem na tej samej łodzi. Włączyłem też FusionLogdawno temu i zapomniałem wyłączyć. Teraz debugowanie ASP.NET MVCaplikacji jest znacznie szybsze. Dzięki Bogu i @rkawano. :)
Leniel Maccaferri

29

Napotkałem ten sam problem i wypróbowałem większość powyższych postanowień. Po prostu usunięcie plików pamięci podręcznej i plików tymczasowych kończy się dla mnie.

Spróbuj usunąć zawartość tych dwóch folderów:

C:\Users\\{UserName}\AppData\Local\Microsoft\WebsiteCache

i

C:\Users\\{UserName}\AppData\Local\Temp (w szczególności foldery iisexpress i tymczasowe pliki ASP.NET).

Można to ustawić tak, aby odbywało się to automatycznie po zalogowaniu się do systemu Windows poprzez dodanie pliku cmd do C:\Users\\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startupfolderu o następującej treści:

rmdir C:\Users\\{username}\AppData\Local\Microsoft\WebsiteCache /s /q

rmdir C:\Users\\{username}\AppData\Local\Temp /s /q

To zadziałało. Folder „AppData” jest folderem ukrytym, na wypadek, gdyby ktoś nie mógł go znaleźć.
Shiva Naru

3
To jest jeden! Działa tak dobrze, że teraz robię to automatycznie po zalogowaniu się do systemu Windows: Dodałem plik o nazwie DeleteVisualStudioCache.cmd do C: \ Users \ {nazwa użytkownika} \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Uruchom za pomocą następujących poleceń: rmdir C: \ Users \ {nazwa użytkownika} \ AppData \ Local \ Microsoft \ WebsiteCache / s / q rmdir C: \ Users \ {nazwa użytkownika} \ AppData \ Local \ Temp / s / q pauza
Graham Laight

25

Myślę, że w końcu mogę przynajmniej poznać przyczynę, choć nie powód. Gdy problem zaczął się ponownie pojawiać, zauważyłem ton osieroconych procesów „conhost.exe”. Chciałbym zamknąć Visual Studio, a one pozostałyby otwarte. Kończenie zadania na każdym z nich w końcu niezawodnie rozwiązało problem. [ufnie]

(Uwaga: conhost.exe nie jest procesem Visual Studio, chociaż Visual Studio go używa. W związku z tym inni użytkownicy mogą mieć inne aplikacje, które uruchamiają conhost.exe. Wiem, że mój komputer nie, dlatego mogę bezpiecznie zakończ zadanie wszystkie oprócz YMMV.)

Dlaczego tak się dzieje? Wydaje się, że zdarza się, gdy otwieram więcej niż jeden projekt na raz, co zwykle robię często, mimo że w dowolnym momencie buduję i debuguję tylko jeden z nich.


Edytuj # 1 - Niestety nie jest to „srebrna kula”. Dla mnie to nie zawsze działa. Zwykle, gdy wszystko zwalnia, po prostu zamykam wszystkie sesje programu Visual Studio, a następnie wchodzę do menedżera zadań i kończę dowolne jego wystąpienie, conhost.exe, iisexpress.exe Microsoft.VisualStudio.Web.Host.exe i MSBuild.exe Mogę znaleźć.

Zazwyczaj po ponownym uruchomieniu projektu ładuje się on szybko. Ale nie zawsze.

Naprawdę myślę, że najlepszym rozwiązaniem jest prawdopodobnie nie budowanie i debugowanie kodu z przekierowanego udziału folderu / sieci.


Edycja nr 2 - Dwa lata później i wciąż jest to dla mnie problem w Visual Studio Community 2013, ale wydawało mi się, że przynajmniej znalazłem winowajcę: Explorer.exe . Tak, kto wiedział. W momencie, gdy kończę to zadanie, bam, strona ładuje się w ciągu jednej sekundy.

Jeśli mam otwartą przeglądarkę plików Eksploratora Windows na przekierowanym dysku sieciowym (co jest często spowodowane tym, że tam właśnie znajduje się mój kod), ten problem wydaje się występować. Zamknięcie okna to za mało, muszę zabić całe zadanie Explorer.exe. Mogłem tylko zgadywać, co to robi ... zwariować na punkcie uchwytów do plików?

Zwykle mogę użyć menedżera zadań, aby uruchomić nowe zadanie explorer.exe (mogę wziąć tylko tak dużo tabulacji), a Visual Studio będzie ładował się ładnie i szybko. Ale jeśli ponownie otworzę Eksploratora Windows, prawie zawsze wraca do super-slow-mo.

Więc jeśli masz przekierowany udział sieciowy, spróbuj. Z pewnością bije lokalnie.


Wiem, że to trochę stara wiadomość, ale miałem ten sam problem. Mój zespół zasugerował, żebym użył skryptu kompilacji, który skopiował pliki z mojego lokalnego źródła do miejsca, w którym pliki były uruchamiane, i za każdym razem, gdy sam uruchamiałem ten podprogram, tworzyłby conhost.exe i nie zamykał go. Kiedy skończyłem wszystkie dodatkowe kopie tego, znów błyskawicznie działało.
SomeoneRandom

22

Wszystkie powyższe są dobre rozwiązania i próbowałem wszystkie, ale mam rozwiązanie tutaj , to znaczy

Debug -> Delete All Breakpoints

19

Dla mnie był to IE 9.08.8112.16241. Gdy tylko użyłem przeglądarki Firefox lub Chrome, nie było powolnego debugowania za pomocą F10 lub F11. Nie wiem na czym polega problem z IE, ale oficjalnie gardzę teraz używaniem go do testowania.

Aktualizacja: wyłączyłem wszystkie dodatki programu IE i wróciło do pełnej prędkości. Włączenie ich pojedynczo ujawniło, że winowajcą był LastPass (w moim przypadku). Wydaje mi się, że wcale nie winię stwardnienia rozsianego.


2
To rozwiązało również mój problem. Podczas próby debugowania uzyskiwałem całkowite blokowanie systemu, zwłaszcza gdy korzystałem z okna QuickWatch. Pasek narzędzi LastPass musi być wyłączony. (IE 10.0.9200.16635)
mpeterson

1
I właśnie dlatego uwielbiam StackOverflow. Ale LastPass powinien to naprawić - wysyłam je teraz e-mailem, aby dać im znać. Oczywiście nadal jest to problem z VS2013 i IE 11. Wyłączono LastPass i wróciło do normy. Dzięki UserBlueOne za informacje - może znów zacząć pracę.
Sean

1
FREAKEN LASTPASS! Moja klawiatura była całkowicie wypełniona podczas debugowania w VS 2012 z moją aplikacją MVC. Wyłączono LastPass i wszystko znów leciało. DZIĘKI! Pozytywne.
Tony

W Win8.x z IE, jeśli używasz konta MS do logowania, możesz zsynchronizować swoje dane logowania, więc nie musisz używać LastPass, ale nadal (częściowo) korzyści, :)
Peter

To… działało dla mnie. Pamiętaj, że jest to teraz 2019 --- sześć lat później --- i używam wtyczki LastPass z Microsoft Edge.
Luke Maurer

15

Dla mnie zaimplementowałem tę wskazówkę, która zasadniczo drastycznie poprawiła wydajność, dodając następujące dwa atrybuty do znacznika kompilacji w pliku web.config

<compilation ... batch="false" optimizeCompilations="true"> ... </compilation>

Co robi batch = "false"?

To sprawia, że ​​prekompilacja jest bardziej selektywna, kompilując tylko te strony, które uległy zmianie i wymagają ponownej kompilacji

Co dokładnie robi optymalizacjeKompilacje? Źródło

ASP.NET używa kodu skrótu dla każdej aplikacji, który zawiera stan wielu rzeczy, w tym bin i folder App_Code oraz global.asax. Za każdym razem, gdy uruchamiana jest domena aplikacji ASP.NET, sprawdza, czy ten kod skrótu zmienił się w stosunku do tego, co wcześniej obliczał. Jeśli tak, to cały folder codegen (gdzie znajdują się kompilowane i kopiowane w tle zestawy) są usuwane.

Gdy ta optymalizacja jest włączona (via optimizeCompilations = "true"), skrót nie bierze już pod uwagę bin, App_Code i global.asax. W rezultacie, jeśli się zmienią, nie usuwamy folderu codegen.

Odniesienie: Element kompilacji na msdn


2
Dziękujemy za wysłanie. To faktycznie zrobiło więcej, aby poprawić moją wydajność niż zaakceptowana odpowiedź.
Kanapolis,

@ Ber'Zophus, możesz wypróbować ten i podzielić się z nami swoimi wynikami?
Korayem

kompilacja wchodzi do system.web
The One

1
Potwierdzono działanie w dużych rozwiązaniach i aplikacjach internetowych (MVC).
hQuse

12

Miałem również problemy z wykonaniem podczas debugowania i próbowałem bardzo wielu opcji debugowania. W moim przypadku osiągnięto ogromną wydajność po zmianie tych opcji:

Narzędzia - Opcje - Debugowanie - Okno wyjściowe - (Ogólne ustawienia wyjściowe - Wszystkie dane wyjściowe debugowania) - WYŁ


12

W moim przypadku było to rozszerzenie .NET Reflector Visual Studio Extension (wersja 8.3.0.93) z VS 2012. Debugowanie trwało 10 sekund dla każdego kroku (F10).

W programie Visual Studio przejdź do Narzędzia / rozszerzenia i aktualizacje ... i wyłącz rozszerzenie .NET Reflector Visual Studio . Nie zapomnij ponownie uruchomić programu Visual Studio.


Dowiedziałem się na własnej skórze, że to też powoduje mój problem. Dopiero po wyłączeniu rozszerzenia sprawdziłem, czy ktoś go zauważył.
awj

11

Miałem problemy z wolnym debugowaniem programu Visual Studio, gdy włączony był debuger „Kod macierzysty” . Spróbuj to wyłączyć.

W „Visual Studio 2012” przejdź do:

  1. Właściwości projektu ->
  2. Internet ->
  3. Debugery (u dołu strony). ->
  4. Wyłącz wszystkie oprócz ASP.NET

Mam nadzieję, że to pomoże.

Podobne pytania: 1 , 2


Mój jest już ustawiony na to niestety, więc nie ma dla mnie poprawki. Ale może to być dobra rada dla innych do wypróbowania.
Ber'Zophus

To naprawiło to dla mnie!
Harvey

11

W moim przypadku tak było

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

Po usunięciu zaznaczenia, mój start debugowania skrócił się z 45-60 sekund do 0-5 sekund.


Ten jest najszybszy
Frank Myat Thu

10

Pewnego razu po przerwie w zasilaniu musiałem stawić czoła temu samemu problemowi powolności za każdym razem, gdy trafiono punkt przerwania lub zgłaszano wyjątek.

Miałem niejasne wspomnienie, że plik „suo” (w tym samym katalogu co plik rozwiązania „sln”) może zostać uszkodzony i spowodować spowolnienie.

wprowadź opis zdjęcia tutaj

Usunąłem moje pliki „suo” i wszystko było w porządku. Usunięcie plików .suo jest nieszkodliwe i oznacza jedynie odtworzenie mojego układu systemu Windows oraz projektu początkowego i kilku innych niekrytycznych dostosowań.


Właśnie zdałem sobie sprawę, że po awarii prądu też się zwolniłem, dziękuję bardzo za tę odpowiedź.
Nic

poszukaj .vsfolderu w późniejszych wersjach programu Visual Studio. Usuń to.
CAD bloke

10

Miałem również do czynienia z tym problemem, poniżej przedstawiam kroki, które wykonuję i zawsze działają dla mnie:

  • Usuwanie pliku .suo rozwiązania.
  • Usuwanie tymczasowych plików ASP.NET (można je znaleźć na stronie % WINDOW% \ Microsoft.NET \ Framework \\ Tymczasowe pliki ASP.NET )
  • Usuwanie wszystkich punktów przerwania w aplikacji.

Ponowne uruchomienie spowodowało, że zajęło to 5 razy dłużej niż normalnie zamiast 10 razy dłużej niż normalnie. Usunięcie pliku .suo spowodowało, że prawie natychmiast się uruchomił. Dzięki!
Shelby115

Wygląda na to, że usunięcie pliku .suo zadziałało. Jakikolwiek powód usunięcia tych plików pomaga zwiększyć wydajność.
SharpCoder,

@SharpCoder .suo zawiera wiele informacji, takich jak pliki, które są obecnie otwarte w IDE, informacje o debugowaniu, ustawienia lokalne itp. A gdy pliki te ulegną uszkodzeniu, vs zaczną zużywać więcej mocy procesora, co prowadzi do VS spowolnienia, a nawet zawieszenia się niektóre przypadki.
Geeky Ninja

9

Nie wiem, czy nadal masz ten problem, ale debuguję witryny w programie Visual Studio, dołączając debugera do samego procesu, a nie pozwalając VS zrobić to za mnie, i zauważyłem, że znacznie poprawia to czasy. Używam rozszerzenia VS o nazwie AttachTo i mam mały artykuł na temat tego, jak go tutaj używać .

Mam nadzieję, że to pomoże.


7

Mój powolny problem VS został rozwiązany przez wyłączenie łącza przeglądarki

wprowadź opis zdjęcia tutaj


Wiem, że komentarze „Dziękuję” są nieco rozczarowane, ale poważnie, DZIĘKUJEMY TAK DUŻO. Ta jedna zmiana spowodowała, że ​​program, który testuję, od spowolnienia do momentu, w którym nie nadaje się do reaktywności. Prawdopodobnie kupiłeś mi około godziny lub dwóch wydajności dziennie tylko za to, że nie
musiałem

@ thnkwthprtls jesteś mile widziany - jedno z tych domyślnych ustawień MS, na które musisz uważać :)
Salty

Nie trzeba go wyłączać, patrz moja odpowiedź => stackoverflow.com/a/34979659/2736742
A. Morel

6

Jeśli ktoś zauważy, że to zachowanie wychodzi z lewego pola, sprawdź, czy nie masz żadnych punktów przerwania w pliku web.config. Musiałem ustawić jedno za pomocą przypadkowego kliknięcia myszą, a to naprawdę spowolniło wszystkie operacje debugowania.


Właśnie miałem dokładnie to samo. Niemal doprowadził mnie do szału. Dlaczego, u licha, nieaktywny punkt przerwania w pliku web.config całkowicie przerywa debugowanie?
pleunv

6

Po spędzeniu całego dnia na czekaniu, aż symbole załadują się tak wolno jak prędkość żółwia, mieszanie i przełączanie między wszystkimi możliwymi kombinacjami: Just My Code, symbole buforowania , Intellitrace , Just-In-Time, procesy zabijania itp.

Moje rozwiązanie polegało na wyłączeniu programu antywirusowego . Tak, Windows Defender spowalniał uruchomienie mojego projektu! Sprawdziłby wszystkie biblioteki DLL zgodnie z żądaniami Visual Studio i spowolnił cały proces ładowania symboli.

Muszę powiedzieć, że nasze maszyny mają świetne specyfikacje, aby naprawdę szybko skompilować rozwiązanie, więc nigdy nie było problemu. Kodujemy w VS 2013 Ultimate.


1
Tak, wyłączenie programu Windows Defender działa jak urok! Aby trwale wyłączyć Windows Defender w Windows 10, ustaw Start = "4" (4 jest wyłączone) w ścieżce RegEdit HKLM \ System \ CurrentContolSet \ Services \ WinDefend
hal

Problem z programem antywirusowym AVG. Czy ktoś się zastanawiał, czy dany folder można wykluczyć z programu antywirusowego w celu rozwiązania problemu? Mam symbole w pamięci podręcznej i wykluczyłem folder pamięci podręcznej symboli - ale to nie miało znaczenia.
Graham Laight,

1
możesz zachować AV i wykluczyć z analizy określone ścieżki i cele (VS i twoje projekty)
Soleil - Mathieu Prévot

5

Opróżnienie pamięci podręcznej symboli działało dla mnie.

Patrz: pasek menu / Narzędzia / Opcje / Debugowanie / Symbole / Opróżnij pamięć podręczną symboli


3

Podobny problem zmarnował połowę mojego dnia!

Ponieważ rozwiązanie mojego problemu różniło się od tego, co tu powiedziano, opublikuję go, aby mógł pomóc komuś innemu.

Mój był punktem zwrotnym. Miałem punkt przerwania „Przerwanie przy funkcji” (tzn. Zamiast naciskać F9 w wierszu kodu, tworzymy je za pomocą okna punktów przerwania), który powinien zatrzymać się w funkcji biblioteki poza moim projektem.

I miałem „Użyj Intellisense do zweryfikowania nazwy funkcji ” SPRAWDZONE. (Informacje tutaj .)

To spowolniło vs jak diabli (rozpoczęcie projektu od 2 sekund do 5 minut).

Usunięcie punktu przerwania rozwiązało go na dobre.


3

Jedną z rzeczy, które działały dla mnie po wykonaniu wszystkich powyższych czynności, było:
W oknie Wątki (Debugowanie-> Windows-> Wątki) ustaw Grupę na Brak. Można to zrobić tylko podczas debugowania.

Miało to wpływ nawet po zamknięciu tego okna.


3

W Visual Studio:

Narzędzia -> Opcje -> Debugowanie -> Symbole

Wybierz „Tylko określone moduły”. Kliknij link „określ moduły” i dodaj pusty moduł (kliknij przycisk nowego dokumentu i naciśnij OK).


3

Otwórz folder rozwiązania w Eksploratorze Windows, zamknij studio wizualne, usuń plik .suo z Eksploratora Windows.

Teraz otwórz projekt w studiu wizualnym, mam nadzieję, że debuger szybko się przyłączy / odłączy.


3

Dla mnie były to warunkowe punkty przerwania. Te wydają się naprawdę spowalniać.


1
Rzeczywiście tak. Ale tylko wtedy, gdy wiersze je zawierające są faktycznie wykonane.
Peter Mortensen

3

Przejdź do zmiennych środowiskowych i poszukaj klucza _NT_SYMBOL_PATH.

Usuń to.

Voila, działała jak urok.


value == symsrv*symsrv.dll*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbolswciąż nie ma kości!
SliverNinja - MSFT

3

Problemem była dla mnie funkcja „Link do przeglądarki”, która jest bardzo ciężka, gdy masz kilka kart otwartych dla tego samego projektu!

Ponieważ za każdym razem, gdy uruchamiamy projekt, otwiera się nowa karta z komunikacją przez łącze przeglądarki.

Wystarczy zamknąć wszystkie karty związane z projektem i pozostawić tylko jedną otwartą!

To darmowe studio wizualne natychmiast! To magia ! ;-)

„Browser Link to funkcja od Visual Studio 2013, która tworzy kanał komunikacji między środowiskiem programistycznym a jedną lub kilkoma przeglądarkami internetowymi. Możesz użyć Browser Link, aby odświeżyć aplikację internetową w kilku przeglądarkach jednocześnie, co jest przydatne do testowania w różnych przeglądarkach. ”


3

Szybkie i łatwe rozwiązanie dla tych, którzy nie mają dużych odchyleń od domyślnych ustawień VS.

Narzędzia -> Ustawienia importu i eksportu -> Tak, zapisz moje bieżące ustawienia -> Visual C #

Jestem pewien, że powyższe rozwiązanie będzie działać również z innymi ustawieniami domyślnymi. W moim przypadku coś poszło nie tak z moimi ustawieniami ładowania symboli, ale nie mogłem tego naprawić, mimo że wypróbowałem sporo sugerowanych rozwiązań.


3

Upewnij się, że nie otworzyłeś programu Visual Studio w trybie administratora

Napotkałem ten problem i musiałem działać w trybie normalnym.


6
Niestety uruchamianie jako administrator jest wymagane, jeśli masz ustawione projekty do uruchamiania w IIS.
Nelson Rothermel

@NelsonRothermel Która wersja? Już nie (VS2017).
Soleil - Mathieu Prévot

@Soleil: W VS2017 jest nadal wymagany. Usługi IIS działają jako usługa systemu Windows (lub zestaw usług), a nie w przestrzeni użytkownika. Być może masz na myśli IIS Express, który nie wymaga uprawnień administratora. Zasadniczo polecam korzystanie z tego drugiego, szczególnie w organizacji, która blokuje maszyny, ale ma kilka wad.
Nelson Rothermel,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.