571 Stimmen

Visual Studio Debugging/Laden sehr langsam

Ich bin mit meinem Latein am Ende. Visual Studio ist typischerweise Meine ASP.NET MVC-Sites lassen sich nur sehr langsam debuggen oder einfach nur laden ("Start ohne Debugging"). Nicht immer: Zunächst werden die Projekte schön schnell geladen, aber sobald sie langsam geladen werden, werden sie danach immer langsam geladen. Ich könnte 1-2 Minuten oder länger warten.

Meine Einstellung:

Ich benutze Visual Studio 2012 Express Derzeit, aber ich habe das gleiche Problem in Visual Studio 2010 Express als auch hatte. Meine Projektmappe ist auf einem Netzlaufwerk gespeichert, genauer gesagt unter "Eigene Dateien", das auf ein Netzlaufwerk umgeleitet wurde, falls das eine Rolle spielt. (Das sollte es nicht. Es gibt Zeiten, in denen meine Website unter dieser Konfiguration sehr schnell geladen wird).

Normalerweise lade ich im Internet Explorer 9, aber das gleiche Problem tritt auch im Firefox auf.

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

Die Symptome:

Das System wird meine Symbole laden Hunderte von Zeiten. Im Grunde das Folgende, aber es gibt mindestens 300 solcher Zeilen, jede mit immer leicht 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.

Im obigen Beispiel habe ich drei DisplayTemplates: "Kontakt", "Standort" und "StatusCode". Es scheint, dass IIS die Symbole bei jedem Aufruf der Anzeigevorlage zweimal lädt. Wenn ich also eine Tabelle mit 100 Einträgen anzeige, die alle drei dieser Anzeigevorlagen aufrufen, werden 600 separate Symbole geladen.

Auch dies ist keine schnelle Operation. Die Protokolldateien, die der IIS erzeugt, brauchen etwa 200 ms, um jedes Symbol zu laden. Es kommt also zu sehr langen Verzögerungen.

Was ich ausprobiert habe:

  • Debug- oder Release-Version, das spielt keine Rolle.
  • Wenn ich mein Projekt auf eine vollständige IIS-Implementierung auf einem Webserver setze, läuft es superschnell und ohne Probleme.
  • Cassini, IIS Express 7.5 und IIS Express 8.0 haben alle das Problem.
  • Alle Haltepunkte löschen bewirkt nichts.
  • Saubere Lösung oder das Löschen der .suo-Datei bewirken ebenfalls nichts.
  • Wenn ich IIS Express repariere/den My Docs\IISExpress oder Visual Studio reparieren/neu installieren, kann das Problem verschwinden, aber nur für eine gewisse Zeit, bevor es wieder auftritt.

Für jeden Ratschlag bin ich dankbar.

Um weitere Fragen zu beantworten: Ja, meine Maschine hat definitiv Pferdestärken. Das Ärgerliche daran ist, dass dasselbe Projekt, an dem NICHTS geändert wurde, manchmal sehr schnell geladen werden kann, typischerweise nachdem ich IIS Express repariert und die My Docs\IISExpress Ordner. Irgendwann passiert dann "etwas", und es dauert wieder 2 Minuten, bis es geladen ist. Das Projekt, an dem ich arbeite, ist nicht kompliziert. Keine externen Bibliotheken oder Abhängigkeiten und mein VS.NET hat keinerlei Add-ons.

Auf diesem Rechner ist Symantec Endpoint Protection installiert, das in der Vergangenheit immer wieder für Unruhe gesorgt hat. Die vollständige Deaktivierung (es ist gut, ein Administrator zu sein) hat das Problem jedoch nicht behoben.

Ich habe an dieser Stelle eine Theorie. Ich denke, das liegt daran, dass ich mit einem umgeleiteten Ordner auf einer Netzwerkfreigabe arbeite. Während der Debugger durch seine Hunderte von Zeilen mit "geladenen Symbolen" ging, hielt ich inne, um zu sehen, was er tat. Er war in meinem Code und lud das DisplayTemplate, das ich hatte. Stepping in der Vorlage Ausgabe dies:

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 würde Visual Studio meine Anzeigevorlage neu kompilieren jedes Mal und das sind wiederum Hunderte von Malen. Meine Theorie ist, dass Visual Studio die Datei kompiliert, sie auf der Netzwerkfreigabe speichert, dann irgendwie eine neue Zeit darauf stempelt und Visual Studio dann denkt, dass die Datei sich geändert hat. Daher kompiliert Visual Studio die Datei noch einmal neu. Das ist aber nur eine Theorie; ich habe wirklich keine Ahnung.

Zum einen habe ich anscheinend Offline-Dateien (dies ist ein Desktop-Computer in einem Büro; das ist mir völlig egal). Ich werde das Programm deaktivieren, neu starten und es morgen erneut versuchen.

Außerdem wird das Problem durch das Verschieben meines Projekts auf das lokale C: behoben. Es lädt sehr schnell. Aber in einer Arbeitsumgebung ist das nicht ideal. Ich verliere frühere Versionen, mein Code wird überhaupt nicht gesichert, es sei denn, ich kopiere ihn manuell, und er wird nicht mehr mit anderen geteilt.

Wenn es sein muss, kann ich sie auch einfach von C auf das Netzwerk kopieren. Es ist viel ärgerlicher, zwei Minuten zu warten, bis jede Seite geladen ist.

5voto

MCS Punkte 21303

In Visual Studio:

Werkzeuge -> Optionen -> Fehlersuche -> Symbole

Wählen Sie "Nur bestimmte Module". Klicken Sie auf den Link "Module angeben", und fügen Sie ein leeres Modul hinzu (klicken Sie auf die Schaltfläche "Neues Dokument" und dann auf "OK").

5voto

Transformer Punkte 6100

zu Klar Cache etc. verwenden Optionen 1 & 2 für Einstellungen/ Fehlersuche Optionen 3 & 4 viel Spaß!

Option 1 : Navigieren Sie zu IIS express, löschen Sie den Cache und die Websites.

cd "C:\Program Files (x86)\IIS Express\"
  • dies ausführen appcmd.exe list site /xml | appcmd delete site /in
  • dies ausführen Del /S /F /Q %temp% - um den Ordner Userprofile Temp zu löschen.
  • dies ausführen Del /S /F /Q %Windir%\Temp

Auch, klar Ihre temporären Dateien in %temp% und abmelden, oder neu starten

Dadurch wird der Windows-Temp-Ordner gelöscht. Dadurch werden alle Seiten gelöscht, viel Spaß!


Option 2: Entfernen/Erstellen der Temp-Ordner

  • Cmd> rmdir C:\Users\\{username}\AppData\Local\Microsoft\WebsiteCache /s /q
  • Cmd> rmdir C:\Users\\{username}\AppData\Local\Temp /s /q

Option 3 : JMC (Just My Code) Option von MSDN

So aktivieren oder deaktivieren Sie Just My Code in Visual Studio, under Tools > Options (or Debug > Options) > Debugging > General, select or deselect Enable Just My Code .

enter image description here


Option 4 : die Visual Studio/Disable Common Plugin-Probleme konfigurieren

Noch mehr Visual Studio-Einstellungen Sie können auch konfigurieren Sie die Visual Studio und deaktivieren Sie ressourcenkillende Funktionen auf die Umgebung, kann mich nicht erinnern, wo ich diese bekam, aber drei einige mehr werde ich in Kürze posten.

Umwelt -> Allgemein

  • Deaktivieren Sie die Option "Visuelles Erlebnis automatisch an den Client anpassen Leistung"
  • Deaktivieren Sie das Kontrollkästchen "Rich Client Visual Experience aktivieren". "Hardware-Grafikbeschleunigung verwenden, wenn verfügbar" Umgebung -> AutoRecover
  • Deaktivieren Sie das Kontrollkästchen "AutoRecover-Informationen speichern alle".
  • Umgebung -> Dokumente
  • Aktivieren Sie "Dokumente als Unicode speichern, wenn Daten nicht in Codepage gespeichert werden können". Umgebung -> Tastatur
  • ForceGC" auf ctrl+num1 setzen
  • Setzen Sie "ReSharper_Toggle" auf ctrl+num0 (wenn ReSharper verwendet wird)
  • Setzen Sie "ReSharper_EnableDaemon" auf ctrl+num8 (wenn ReSharper verwendet wird) Umgebung -> Startup
  • Setzen Sie "Beim Start" auf "Leere Umgebung beim Start anzeigen".
  • Deaktivieren Sie die Option "Alle Inhalte herunterladen". Umgebung -> Synchronisierte Einstellungen
  • Deaktivieren Sie "Einstellungen geräteübergreifend synchronisieren, wenn Sie bei Visual Studio angemeldet sind".

5voto

Dimitri C. Punkte 21080

Das Leeren des Symbol-Caches hat bei mir funktioniert.

Siehe: Menüleiste / Extras / Optionen / Fehlersuche / Symbole / Symbol-Cache leeren

4voto

Roman Pokrovskij Punkte 8762

Asp.net Core-Debugging war schmerzhaft langsam, weil unbekannte VS-Erweiterung hatte Standard Just in Time Debugger ersetzt.

Ich habe diese Meldung in den OPTIONS gefunden \DEBUGGING\Just -Registerkarte "Zeitliche Konfiguration" (als Warntext). Ein anderer Debugger hat sich als Just-In-Time-Debugger registriert. Aktivieren Sie zur Reparatur das Just-In-Time-Debugging oder führen Sie Visual Studio Repair aus.

Beschreibung: https://msdn.microsoft.com/en-us/library/ssc8234s.aspx?f=255&MSPPError=-2147217396

Die Rückkehr zu den Standard-JIT-Debugger (nur aktiviert Verwaltet Option, die nicht aktiviert war) lösen alle meine Probleme.

4voto

BuddhiP Punkte 5911

Ein ähnliches Problem hat mich die Hälfte meines Tages gekostet!

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

Meiner war ein Haltepunkt. Ich hatte eine "Pause bei Funktion" Haltepunkt (d.h. anstatt F9 auf einer Codezeile zu drücken, erstellen wir sie mit dem Haltepunktfenster), der in einer Bibliotheksfunktion außerhalb meines Projekts anhalten soll.

Und ich hatte "Verwenden Sie Intellisense, um den Funktionsnamen zu überprüfen " CHECKED (Info ici .)

Dies verlangsamte vs wie die Hölle (Projektstart von 2 Sekunden auf 5 Minuten).

Die Beseitigung der Unterbrechungsstelle löste das Problem endgültig.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X