asp.net-mvc slow Visual Studio Debugging/Laden sehr langsam




visual studio loading symbols slow (24)

Es gibt auch Komplikationen in Teilansichten, bei denen auf der Seite ein Fehler auftritt, der nicht sofort erkannt wird. Wie Model.SomeValue anstelle von Model.ThisValue. Es kann nicht unterstreichen und Probleme beim Debuggen verursachen. Dies kann ein echter Schmerz sein, um zu fangen.

Ich bin am Ende. Visual Studio ist in der Regel mühsam langsam zu debuggen oder nur einfach zu laden ("Start ohne Debuggen") meine ASP.NET MVC-Sites. Nicht immer: Zuerst werden die Projekte gut und schnell geladen, aber sobald sie langsam geladen sind, werden sie immer langsam geladen. Ich könnte 1-2 Minuten oder länger warten.

Meine Einrichtung:

Ich verwende momentan Visual Studio 2012 Express , aber ich hatte das gleiche Problem in Visual Studio 2010 Express. Meine Lösung ist auf einem Netzlaufwerk gespeichert. speziell, wenn es wichtig ist, werden Meine Dokumente auf ein Netzlaufwerk umgeleitet. (Es sollte nicht. Es gibt Zeiten, wo meine Website sehr schnell unter diesem Setup lädt.)

Ich lade normalerweise in Internet Explorer 9, aber das gleiche Problem tritt in Firefox auf.

Dies kann in jedem ASP.NET MVC-Projekt geschehen, an dem ich arbeite, und es scheint sich um DisplayTemplates zu drehen, die alle meine ASP.NET MVC-Projekte haben. Und es ist alles C # und Razor, wenn das wichtig ist.

Symptome:

Das System lädt meine Symbole hunderte Male. Im Grunde genommen das Folgende, aber es gibt mindestens 300 solcher Zeilen mit jeweils etwas unterschiedlichen DLL-Dateien für die gleichen CSHTMLs:

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

Oben habe ich drei DisplayTemplates: "Kontakt", "Location" und "StatusCode". Es scheint, dass IIS Symbole zweimal für jedes Mal lädt, wenn das DisplayTemplate aufgerufen wird. Wenn ich also eine Tabelle mit 100 Einträgen zeige, die alle drei dieser Bildschirmtemplates aufruft, werden 600 separate Symbole geladen.

Dies ist auch keine schnelle Operation. Wenn Sie in den von IIS erstellten Protokolldateien suchen, dauert es etwa 200 ms, bis jedes Symbol geladen ist. Also, super lange Verzögerungen.

Was ich versucht habe:

  • Debug oder Release-Version spielt keine Rolle.
  • Wenn ich mein Projekt auf eine vollständige IIS-Implementierung auf einem Webserver setze, läuft es super schnell und ohne Probleme.
  • Cassini, IIS Express 7.5 und IIS Express 8.0 haben alle das Problem.
  • Alle Haltepunkte löschen tut nichts.
  • Clean Solution , oder Löschen der. Suo auch nichts tun.
  • Wenn ich IIS Express repariere, oder den Ordner My Docs\IISExpress oder Visual Studio repariere / neu installiere, → kann das Problem verschwinden, aber nur für eine Weile, bevor es wieder zurückkommt.

Irgendein Rat überhaupt wird geschätzt.

Um weitere Fragen zu beantworten, hat meine Maschine definitiv die PS. Die ärgerliche Sache ist, dass das gleiche Projekt, mit NOTHING geändert, manchmal sehr, sehr schnell geladen werden kann, normalerweise, nachdem ich IIS Express repariere und den My Docs\IISExpress Ordner My Docs\IISExpress . Irgendwann kommt "etwas" vor und es dauert bis zu 2 Minuten wieder zu laden. Woran ich gerade arbeite, ist kein kompliziertes Projekt. Keine externen Bibliotheken oder Abhängigkeiten, und mein VS.NET hat keine Addons was auch immer.

Bemerkenswert ist, dass diese Maschine über Symantec Endpoint Protection verfügt, die seit jeher Verwüstungen verursacht. Aber es sofort zu deaktivieren (es ist gut, ein Administrator zu sein) behebt das Problem nicht.

Ich habe eine Theorie an diesem Punkt. Ich denke, das ist alles, weil ich von einem umgeleiteten Ordner von einer Netzwerkfreigabe arbeite. Während der Debugger seine Hunderten von "geladenen Symbolen" durchging, blieb ich stehen, um zu sehen, was es tat. Es war in meinem Code, Laden der DisplayTemplate, die ich hatte. Treten Sie in die Vorlage ein:

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'

Es sieht so aus, als ob Visual Studio jedes Mal , wenn es aufgerufen wird, mein Displaytemplate neu kompiliert, was wiederum hunderte Male ist. Meine Theorie ist, dass Visual Studio die Datei kompiliert, sie in der Netzwerkfreigabe speichert, die Netzwerkfreigabe dann irgendwie eine neue Zeit darauf stempelt, und Visual Studio dann denkt, dass sich die Datei geändert hat und Visual Studio es erneut erneut kompiliert. Nur eine Theorie obwohl; Ich habe wirklich keine Ahnung.

Zum einen habe ich anscheinend Offline-Dateien (das ist ein Desktop-Computer in einem Büro; das ist mir völlig egal). Ich deaktiviere, starte neu und versuche es morgen erneut.

Außerdem verschiebt mein Projekt, wie es ist, auf das lokale C: behebt es. Es lädt sehr schnell. Aber das ist in einer Arbeitsumgebung nicht ideal. Ich habe frühere Versionen verloren. Mein Code wird nicht gesichert, es sei denn, ich kopiere ihn manuell und er wird nicht mehr mit anderen geteilt.

Ich kann damit auskommen, es von C auf die Netzwerkfreigabe hin und her zu kopieren, wenn es dazu kommt. Es ist viel ärgerlicher, für jede Seitenladung zwei Minuten zu warten.


Ich hatte das gleiche Problem und habe die meisten der obigen Lösungen ausprobiert. Das einfache Löschen von Cache- und temporären Dateien endet für mich.

Versuchen Sie, den Inhalt dieser beiden Ordner zu entfernen:

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

und

C:\Users\\{UserName}\AppData\Local\Temp (insbesondere die Ordner iisexpress und Temporary ASP.NET Files).

Dies kann automatisch beim Anmelden bei Windows durch Hinzufügen einer cmd-Datei zum Ordner C:\Users\\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup mit folgendem Inhalt C:\Users\\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup :

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

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

Für mich waren es bedingte Haltepunkte. Diese scheinen die Dinge wirklich zu verlangsamen.


Mein langsames VS-Problem wurde gelöst, indem der Browser Link deaktiviert wurde


In meinem Fall war es die .NET Reflector Visual Studio Erweiterung (Version 8.3.0.93) mit VS 2012. Das Debugging dauerte 10 Sekunden für jedes Step Over (F10).

Wechseln Sie in Visual Studio zu Extras / Erweiterungen und Updates ..., und deaktivieren Sie die .NET Reflector Visual Studio-Erweiterung . Vergessen Sie nicht, Visual Studio neu zu starten.


In meinem Fall war es

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

Sobald ich dies deaktiviert hatte, ging mein Debug-Start von 45-60 Sekunden auf 0-5 Sekunden.


Haben Sie FusionLog aktiviert?

Mein VisualStudio war sehr langsam zu starten, offene Lösung und laden Symbole beim Debuggen. Es war langsam nur auf meiner Maschine, aber nicht auf anderen Maschinen.

FusionLog schreibt Tonnen von Log-Zeug auf die Festplatte. Es auf RegEdit zu deaktivieren, löste alles, in meinem Fall.

Dies ist der FusionLog-Schlüssel in der Registrierung:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion

Überprüfen Sie den ForceLog-Wert (1 aktiviert, 0 deaktiviert).


Für mich habe ich diesen Tipp implementiert, der die Leistung drastisch verbessert hat, indem die folgenden zwei Attribute zum Kompilierungs-Tag in web.config hinzugefügt wurden

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

Was macht Batch = "false"?

Es macht die Vorkompilierung selektiver, indem nur Seiten kompiliert werden, die sich geändert haben und erneut kompiliert werden müssen

Was genau macht die optimizeCompilations? Source

ASP.NET verwendet einen Hashcode pro Anwendung, der den Status einer Reihe von Dingen enthält, einschließlich des Ordners bin und App_Code und global.asax. Immer wenn eine ASP.NET-Anwendungsdomäne gestartet wird, wird überprüft, ob sich dieser Hash-Code gegenüber dem zuvor berechneten Wert geändert hat. Wenn dies der Fall ist, wird der gesamte Codegen-Ordner (in dem kompilierte und Schatten-kopierte Assemblys live sind) gelöscht.

Wenn diese Optimierung aktiviert ist (via optimizeCompilations = "true"), berücksichtigt der Hash nicht mehr bin, App_Code und global.asax. Wenn diese Änderungen vorgenommen werden, löschen wir den Codegen-Ordner daher nicht aus.

Referenz: Kompilierungselement in msdn


In meinem Fall habe ich bemerkt, dass das Deaktivieren meiner Internetverbindung es so schnell wie mit ctrl-f5 laufen lassen würde, also ging ich zu Debug-> Optionen-> Symbolen und deaktivierte einfach alle .pdb-Speicherorte.

Sieht so aus, als ob VS bei jedem Start einer Debug-Sitzung versucht hat, sich mit diesen Servern zu verbinden.

Beachten Sie, dass die Deaktivierung von Debug-> Optionen-> Debugging-> Allgemein "Quellenunterstützung aktivieren" oder "Quellendateien genau mit der Originalversion requirieren" keinen Unterschied machen würde.


Das Leeren des Symbol-Cache funktionierte für mich.

Siehe: Menüleiste / Extras / Optionen / Debugging / Symbole / Empty Symbol Cache


Nichts davon funktionierte für mich, aber ich fand einen Breakpoint auf einem Symbol, das gelöscht wurde. Scheint 2010 war daran hängen. Um zu sehen, ob das Ihr Problem ist, machen Sie debug-> windows-> breakpoints Wenn es welche gibt, löschen Sie sie einfach.

Saunders, erwähnt, dass er das überprüft hat, aber es wurde nicht in den Lösungen für dieses Problem erwähnt. Vielleicht allgemein bekannt für einige, aber nicht alle von uns.


Für mich war es IE 9.08.8112.16241. Sobald ich Firefox oder Chrome benutzt habe, gab es kein langsames Debugging mit F10 oder F11. Ich weiß nicht, was das Problem mit IE ist, aber ich verachte offiziell, es jetzt für das Testen zu verwenden.

Update: Ich habe alle IE-Programm-Add-ons ausgeschaltet und es ist wieder auf Hochtouren. Sie einzeln einzuschalten ergab, dass LastPass (in meinem Fall) der Schuldige war. Ich schätze, ich kann MS nichts anhaben.


Ich hatte Probleme mit langsamen Debugging von Visual Studio, wenn Debugger "Native Code" aktiviert war. Versuche es zu deaktivieren.

Auf "Visual Studio 2012" gehen Sie zu:

  1. Projekteigenschaften ->
  2. Web ->
  3. Debugger (unten auf der Seite). ->
  4. Deaktivieren Sie alle außer ASP.NET

Ich hoffe es hilft.

Ähnliche Fragen: 1 , 2


Die oben genannten sind alle gute Lösungen und ich habe versucht, alle von ihnen, aber die Lösung here , was zu tun ist

Debug -> Delete All Breakpoints

Ähnliche Problem verschwendete besser die Hälfte meines Tages!

Da die Lösung für mein Problem anders war als das, was hier gesagt wurde, werde ich es posten, damit es jemand anderem hilft.

Meins war ein Haltepunkt. Ich hatte einen "Break at function" Breakpoint (dh anstatt F9 auf einer Codezeile zu drücken, erzeugen wir sie mit Hilfe des Breakpoints Fensters), das in einer Bibliotheksfunktion außerhalb meines Projekts stehen soll.

Und ich hatte "Intellissense verwenden, um den Funktionsnamen zu überprüfen " CHECKED. (Info here .)

Dies verlangsamte sich vs. höllisch (Projektstart von 2 Sekunden auf 5 Minuten).

Das Entfernen des Knickpunktes löste es für immer.


In Visual Studio:

Extras -> Optionen -> Debugging -> Symbole

Wählen Sie "Nur angegebene Module". Klicken Sie auf den Link "Module angeben" und fügen Sie ein leeres Modul hinzu (klicken Sie auf das neue Dokument und dann auf OK).


Öffnen Sie den Lösungsordner im Windows Explorer, schließen Sie das Visual Studio, löschen Sie die .su-Datei aus dem Windows Explorer.

Öffnen Sie nun das Projekt im Visual Studio, hoffentlich wird der Debugger schnell angeschlossen / gelöst.


Wenn jemand bemerkt, dass dieses Verhalten aus dem linken Feld kommt, vergewissern Sie sich, dass in der Datei web.config keine Haltepunkte gesetzt sind. Ich muss einen mit einem Mausklick gesetzt haben, und es hat wirklich alle Debug-Operationen verlangsamt.


Einmal, nach einem Stromausfall, hatte ich jedes Mal das gleiche Langsamkeitsproblem, wenn ein Haltepunkt getroffen oder eine Ausnahme ausgelöst wurde.

Ich hatte die vage Erinnerung, dass die "suo" -Datei (im selben Verzeichnis wie die "sln" -Lösungsdatei) beschädigt werden kann und alles verlangsamt.

Ich löschte meine "suo" -Dateien und alles war in Ordnung. Das Löschen der .su-Dateien ist harmlos und bedeutet nur, dass ich mein Windows-Layout und das Startprojekt sowie einige andere nicht kritische Anpassungen neu erstellen muss.


Ich habe den Ordner "Temporäre ASP.NET-Dateien" gelöscht und die Ladenutzung für meine localhost-Seite wurde erheblich verbessert. Hier ist der Pfad ...% temp% \ Temporäre ASP.NET-Dateien \


Ich weiß nicht, ob Sie dieses Problem immer noch haben, aber ich debugge Websites in Visual Studio, indem Sie den Debugger an den Prozess selbst anfügen, anstatt VS für mich tun zu lassen, und ich habe festgestellt, dass es die Zeiten erheblich verbessert. Ich benutze eine Erweiterung für VS namens AttachTo und ich habe einen kleinen Artikel darüber, wie ich es here benutze.

Ich hoffe das hilft.


Ich hatte Probleme mit der Ausführungsperformance beim Debuggen und ich habe sehr viele Debugger-Optionen ausprobiert. In meinem Fall wurde eine große Leistung erreicht, wenn ich diese Optionen ändere:

Extras - Optionen - Debugging - Ausgabefenster - (Allgemeine Ausgabeeinstellungen - Alle Debugausgaben) - AUS


Nachdem Sie den ganzen Tag darauf gewartet haben, dass die Symbole so langsam wie die Geschwindigkeit der Schildkröte geladen werden, können Sie zwischen allen möglichen Kombinationen mischen und wechseln: Just My Code, Caching-Symbole , Intellitrace , Just-In-Time, Intellitrace usw.

Meine Lösung bestand eigentlich darin , das Antivirenprogramm zu deaktivieren . Ja, Windows Defender verlangsamte meinen Projektstart! Es würde alle dlls überprüfen, wie Visual Studio sie angefordert hat, und verlangsamt den gesamten Symbolladeprozess.

Ich muss sagen, dass unsere Maschinen sehr gute Spezifikationen haben, um die Lösung wirklich schnell zu kompilieren, so dass dies nie ein Problem war. Wir codieren VS 2013 Ultimate.


Ich stand auch vor diesem Problem, unten sind die Schritte, die ich mache und es funktioniert immer für mich:

  • Löschen der. Suo-Datei der Lösung
  • Löschen der temporären ASP.NET-Dateien (Sie finden sie unter " % WINDOW% \ Microsoft.NET \ Framework \\ Temporäre ASP.NET-Dateien" )
  • Löschen aller Haltepunkte in der Anwendung




cassini