2013-09-06 9 views
8

Ich mache PHP-Entwicklung in Visual Studio, und meine Lösung enthält Projekte für PHP, SSRS und SQL Server (SSDT). Und ich verwende TFS für die Versionskontrolle. Es passiert also viel in meiner Entwicklungsumgebung, die "schiefgehen" kann.Problembehandlung bei Visual Studio 2012 Hänge/Abstürze

Ich erlebe intermittierenden hängt, in der Regel etwa 5 Minuten pro Clip. Visual Studio gibt mir den Warte-Cursor, und wenn ich irgendwo in VS klicke, wird das Fenster abgeblendet. Und dann muss ich es einfach abwarten. Manchmal kann ich die devenv.exe-Task beenden, manchmal dauert es einige Minuten, um die Task zu beenden. Wenn ich geduldig bin, warte ich einfach und irgendwann (ca. 5 Minuten) kommt VS wieder zum Leben. Ich habe noch nie einen Datenverlust, Probleme mit der Quellcodeverwaltung usw. erlebt, selbst wenn ich den Prozess beendet habe.

Es passiert manchmal, wenn ich speichere. Manchmal, wenn ich einchecke. Manchmal, wenn ich auschecke. Manchmal, wenn ich baue. Ich konnte kein Muster des Verhaltens erkennen.

Alle meine Workstation-Ressourcen sind in Ordnung - kein RAM oder I/O oder Netzwerk- oder CPU-Probleme.

Was kann ich tun, um dieses Problem zu beheben? Kann ich VS in einer Art Protokollierungsmodus ausführen, mit dem ich genau feststellen kann, was während dieser Sperrzeiten so lange dauert?

+0

Run es im abgesicherten Modus zu sehen, ob es ein Add-In ist: 'devenv.exe/SafeMode' –

+0

Sie können auch das Einschalten Protokollierung versuchen: denenv.exe/log –

+0

@ ta.speeot.is - Wenn ich in laufen Sicherer Modus, ich kann mein Projekt nicht laden, da es abhängig von Erweiterungen ist, meine PHP-Entwicklung zu machen. – Shoeless

Antwort

9

So schalten Sie in Visual Studio anmelden, laufen: devenv.exe/log

ich persönlich tun dies mit einer Verknüpfung würde.

+3

Für andere, die dies lesen, müssen Sie auch einen Protokolldateinamen in der Befehlszeile angeben, zum Beispiel: devenv.exe/log c: \ temp \ vs.log (siehe auch http://msdn.microsoft.com/de-de us/library/ms241272 (v = vs.110) .aspx) – Shoeless

+1

Hier ist ein hilfreicher Link ... Es zielt VS2010, und die Bilder sind kaputt, aber es ist der beste Artikel, den ich zu dem Thema finden könnte: http: // Blogs .msdn.com/b/visualstudio/archive/2010/02/24/Fehlersuche-mit-der-Aktivitäts-Log.aspx – Shoeless

+0

VS gehängt. Ich schaute auf das Protokoll und sah, dass meine Layouts-o-rama Erweiterung eine Reihe von Fehlern hatte. Ich habe diese Erweiterung deaktiviert und VS hatte seither keine Sperre mehr! – Shoeless

4

Sie sollten alte TFS-Workspace-Definitionen löschen, die von Continuous Integration Builds übrig geblieben sind.

Wir hatten das gleiche Problem mit einem großen Team Foundation Server-Projektbaum. Manchmal, aber nicht immer, würde das Öffnen einer Lösung in Visual Studio 2010 oder Visual Studio 2012 exakt so erfolgen, wie oben beschrieben. VS 2010 war am verletzlichsten; VS 2012 schien weniger anfällig, aber es würde immer noch hängen.

Wir konnten einige Hinweise erhalten, indem die Serveraktivität auf dem Server-Rechner TFS Überwachung und den zugrunde liegenden SQL Server-Computer. Eine bestimmte gespeicherte Abfrageprozedur verwendete in SQL Server zu lange CPU-Zeit. Wir haben diesen Namen für eine gespeicherte Prozedur in einer TFS-Operation nachverfolgt, die beim Scannen von TFS-Arbeitsbereichdefinitionen für das Auschecken anderer Dateien durch Benutzer verwendet wurde.

Unsere TFS-Umgebung wird seit über 3 Jahren verwendet, und wir verwenden Continuous Integration-Builddefinitionen mit einer "Zombie-Armee" von Entwicklerarbeitsstationen als TFS Build Agent-Hosts. Wir erstellen auch neue TFS-Zweige für Major-Releases. Jeder Zweig enthält etwa 20 separate Visual Studio-Lösungen mit eigenen Builddefinitionen.

Im Laufe der Zeit hatten wir über 2000 TFS Workspace-Definitionen auf jeden Entwickler-Workstation angesammelt. Wir hatten ungefähr 10 Arbeitsplätze gleichzeitig mit ihren eigenen Definitionen.

Mit dem Visual Studio Befehlsfenster und als TFS Administrator ausgeführt wird, haben wir diesen Befehl alle Arbeitsbereiche von unseren „bauen Benutzer“ erstellt identifizieren:

tf Workspaces/Sammlung: tfservername \ Sammlungsname/Besitzer: ourbuilduser > c: \ tf_ws_del.

bittet

Wir haben dann globalen Ersatz und Notepad ++ Makro-Editor Recorder jede Ergebniszeile in diese Form zu konvertieren:

tf Arbeitsplatz/Löschen/Sammlung: tfservername \ Sammlungsnamen workspace; ourbuilduser < c: \ yes.txt

wo C: \ yes.txt eine einzige Zeile von „y“ enthalten

Wir haben auch einige menschliche Beurteilung Workspaces Löschleitungen für unsere jüngsten TFS Zweig genannt zu entfernen.

Wir führten dann das c: \ tfs_ws_del.bat-Skript im selben Visual Studio-Befehlsfenster aus und warteten geduldig, bis es fertig war.

Endergebnis: Unsere Visual Studio-Lösungen öffnen sich sehr schnell. Selbst das Durchsuchen der Ordnerhierarchie im Quellcodeverwaltungs-Explorer hat sich erheblich beschleunigt.

Warnung: Die Löschvorgänge für eine sehr große Anzahl von Arbeitsbereichen erweitern möglicherweise die TempDB auf dem zugrunde liegenden SQL Server um einen großen Betrag. Koordinieren Sie mit Ihren DBAs, um Speicherplatz auf dem SQL Server-Computer zu überwachen. Durch das Stoppen und Neustarten der TFS-Sammlung über das grafische TFS-Verwaltungskonsole-Tool können Sie einen Teil dieses TempDB-Bereichs zurückerhalten und an die interne "freie Block" -Liste zurückgeben.

0

Dies kann auch passieren, wenn die in Ihren Debug-Optionen angegebene Symbol-Server nicht erreichbar oder nicht erreichbar sind ... es wird in diesem Fall nicht wirklich hängen bleiben, aber scheint wie es für jeden Dateizugriffszeitpunkt ausläuft.

Um dieses Problem vorübergehend zu umgehen, deaktivieren Sie die Symbolserver, die inaktiv sind.