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




visual studio loading symbols slow (20)

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.

https://code.i-harness.com


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


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


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

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


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

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.


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.


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.


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


Hier ist, wie ich das Problem "langsames Laden von Symbolen" in Visual Studio 2012 gelöst habe:

  • Gehe zu Extras -> Optionen -> Debugging -> Allgemein

  • Markieren Sie das Häkchen neben "Nur Code aktivieren".

  • Gehe zu Extras -> Optionen -> Debugging -> Symbole

  • Klicken Sie auf die Schaltfläche "..." und erstellen / wählen Sie einen neuen Ordner irgendwo auf Ihrem lokalen Computer, um zwischengespeicherte Symbole zu speichern. Ich nannte meinen "Symbol-Caching" und legte es in Dokumente -> Visual Studio 2012.

  • Klicken Sie auf "Alle Symbole laden" und warten Sie, bis die Symbole von den Servern von Microsoft heruntergeladen wurden, was eine Weile dauern kann. Beachten Sie, dass die Schaltfläche Alle Symbole laden nur während des Debuggens verfügbar ist.

  • Deaktivieren Sie das Häkchen neben "Microsoft Symbol Servers", um zu verhindern, dass Visual Studio die Microsoft-Server remote abfragt.

  • OK klicken".

Von jetzt an sollte das Laden von Symbolen viel schneller sein.

Wenn Sie Änderungen an Microsoft-Assemblys vornehmen, müssen Sie möglicherweise erneut in das Dialogfeld "Symbole" wechseln und "Alle Symbole laden" erneut aufrufen.


Ich denke, ich kann endlich die Ursache kennen, aber nicht den Grund dafür. Als das Problem erneut auftrat, bemerkte ich eine Unmenge von "conhost.exe" -Prozessen. Ich würde Visual Studio schließen und sie bleiben offen. Ending Aufgabe auf jedem von ihnen hat schließlich, zuverlässig das Problem gelöst. [hoffnungsvoll]

(Beachten Sie, dass conhost.exe kein Visual Studio-Prozess ist, obwohl Visual Studio es verwendet. Daher können andere Benutzer da draußen andere Anwendungen haben, die conhost.exe ausführen. Ich kenne meine Maschine nicht, weshalb ich sie kann sichere Aufgabe alle von ihnen, aber YMMV.)

Warum das passiert? Es scheint zu geschehen, wenn ich mehr als ein Projekt auf einmal öffne, was ich oft tue, obwohl ich nur eines von ihnen jederzeit baue und debugge.

Edit # 1 - Dies ist leider keine "Silberkugel". Es funktioniert nicht immer für mich. In der Regel, wenn die Dinge langsam werden, schließe ich einfach alle meine Visual Studio-Sitzungen, dann gehen Sie in den Task-Manager und beenden Sie jede Instanz davon, conhost.exe, iisexpress.exe Microsoft.VisualStudio.Web.Host.exe und MSBuild.exe Ich kann finden.

In der Regel wird es dann, wenn ich mein Projekt neu starte, schnell geladen. Aber nicht immer.

Ich denke, der beste Weg ist wahrscheinlich, Code nicht von einem umgeleiteten Ordner / einer Netzwerkfreigabe zu erstellen und zu debuggen.

Edit # 2 - Zwei Jahre später, und das ist immer noch ein Problem für mich in Visual Studio Community 2013, aber ich schien zumindest die Täter Aufgabe zu finden: Explorer.exe . Ja, wer wusste. In dem Moment, in dem ich diese Aufgabe beende, wird die Seite in einer einzigen Sekunde geladen.

Wenn ich einen Windows Explorer-Dateibrowser für mein umgeleitetes Netzlaufwerk geöffnet habe (was oft der Fall ist, weil mein Code dort ist), tritt dieses Problem auf. Das Schließen des Fensters ist nicht genug, ich muss den gesamten Explorer.exe Task beenden. Ich konnte nur raten, was es macht ... verrückt mit Dateigriffen?

Ich kann normalerweise den Task-Manager verwenden, um eine neue explorer.exe-Task zu starten (ich kann nur so viel Alt-Tabbing nehmen), und Visual Studio wird weiterhin schön und schnell geladen. Aber wenn ich Windows Explorer wieder öffne, geht es fast immer wieder auf super-slow-mo.

Also, wenn Sie eine umgeleitete Netzwerkfreigabe haben, versuchen Sie es. Es ist sicher besser, lokal zu arbeiten.


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


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


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

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.


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.


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.


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


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.


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.


Das Problem für mich war die "Browser Link" -Funktion, die sehr schwer ist, wenn mehrere Tabs für dasselbe Projekt geöffnet sind!

Denn jedes Mal, wenn wir das Projekt starteten, öffnet es einen neuen Tab mit Browser-Link-Kommunikation.

Schließen Sie einfach alle Registerkarten, die mit dem Projekt verknüpft sind, und lassen Sie nur eines geöffnet!

Dieses kostenlose sofort visuelle Studio! Es ist Magie ! ;-)

"Browser Link ist ein Feature seit Visual Studio 2013, das einen Kommunikationskanal zwischen der Entwicklungsumgebung und einem oder mehreren Webbrowsern erstellt. Sie können Browser Link verwenden, um Ihre Webanwendung in mehreren Browsern gleichzeitig zu aktualisieren, was für browserübergreifende Tests hilfreich ist. "





cassini