Unterstützte Codeänderungen (C#)
Die Funktion "Bearbeiten und Fortfahren" behandelt die meisten Arten von Codeänderungen in Methodentexten. Die meisten Änderungen außerhalb von Methodentexten sowie einige Änderungen in Methodentexten können jedoch während des Debuggens nicht übernommen werden. Wenn Sie diese nicht unterstützten Änderungen übernehmen möchten, müssen Sie das Debuggen beenden und mit einer neuen Version des Codes erneut starten.
Folgende Änderungen am C#-Code können während einer Debugsitzung nicht übernommen werden:
Änderungen an der aktuellen Anweisung oder einer beliebigen anderen aktiven Anweisung.
Aktive Anweisungen umfassen alle Anweisungen in Funktionen der Aufrufliste, die aufgerufen wurden, um zur aktuellen Anweisung zu gelangen.
Die aktuelle Anweisung wird im Quellcodefenster durch einen gelben Hintergrund gekennzeichnet. Andere aktive Anweisungen werden durch einen schattierten Hintergrund gekennzeichnet und sind schreibgeschützt. Diese Standardfarben können im Dialogfeld Optionen geändert werden.
Änderungen an globalen Symbolen, einschließlich der folgenden:
Hinzufügen von neuen Typen.
Hinzufügen von Methoden zu einem Typ.
Ändern der Signatur eines Typs.
Hinzufügen von Feldern, Ereignissen oder Eigenschaften zu einem Typ.
Bearbeiten einer anonymen Methode oder einer beliebigen Methode, die eine anonyme Methode enthält. Diese Methoden werden durch einen schattierten Hintergrund gekennzeichnet.
Hinzufügen einer neuen anonymen Methode.
Hinzufügen, Entfernen oder Ändern von Attributen.
Hinzufügen, Entfernen oder Ändern von using-Direktiven.
Entfernen oder Ändern lokaler Variablen. Das Hinzufügen lokaler Variablen ist zulässig.
Hinzufügen von foreach, using oder lock zu der aktiven Anweisung.
Ändern einer Methode, die eine yield return- oder yield break-Anweisung enthält.
Ändern eines Konstruktors mit einem Feld, das durch eine anonyme Methode initialisiert wird.
Unsicherer Code
Änderungen an unsicherem Code unterliegen denselben Einschränkungen wie Änderungen an sicherem Code, allerdings mit einer zusätzlichen Einschränkung:
- Die Funktion "Bearbeiten und Fortfahren" unterstützt keine Änderungen an unsicherem Code, der sich innerhalb einer Methode mit dem stackalloc-Operator befindet. Dies gilt nur für aktive Methoden. Während des Debuggens ist jede Funktion, die zurzeit in der Aufrufliste enthalten ist, eine aktive Funktion.
Ausnahmen
Die Funktion "Bearbeiten und Fortfahren" unterstützt Änderungen an catch-, finally- und try-Blöcken. Es gelten einige Ausnahmen für Blöcke in aktiven Methoden, z. B. Methoden, die gegenwärtig in der Aufrufliste enthalten sind.
In einer aktiven Funktion, die die aktuellste Funktion in der Aufrufliste ist, wird von "Bearbeiten und Fortfahren" Folgendes nicht unterstützt:
Hinzufügen eines catch- oder finally-Blocks zur aktiven Anweisung.
Hinzufügen von geschachtelten Ausnahmehandlern mit mehr als sechs Schachtelungsebenen.
In einer aktiven Funktion, die nicht die aktuellste Funktion in der Aufrufliste ist, wird von "Bearbeiten und Fortfahren" Folgendes nicht unterstützt:
Hinzufügen eines catch-, finally- oder try-Blocks zur aktiven Anweisung.
Hinzufügen von geschachtelten Ausnahmehandlern mit mehr als sechs Schachtelungsebenen.
Ändern von Code in einem try-Block, der die aktive Anweisung enthält.
Nicht unterstützte Szenarien
Bearbeiten und Fortfahren steht in den folgenden Debugszenarios nicht zur Verfügung:
Debuggen von LINQ-Code. Weitere Informationen finden Sie unter Debuggen von LINQ.
Debuggen im gemischten Modus (systemeigen/verwaltet).
SQL-Debuggen.
Debuggen eines Dr.Watson-Dumps.
Bearbeiten von Code nach einem Ausnahmefehler, wenn die Option Aufrufliste für Ausnahmefehler entladen nicht aktiviert ist.
Debuggen einer eingebetteten Laufzeitanwendung.
Debuggen einer Anwendung mit Anfügen an, anstatt die Anwendung im Menü Debuggen durch Auswählen von Start auszuführen.
Debuggen von optimiertem Code.
Debuggen einer alten Version des Codes, wenn eine neue Version aufgrund von Buildfehlern nicht erstellt werden konnte.
Siehe auch
Aufgaben
Gewusst wie: Verwenden von "Bearbeiten und Fortfahren" (C#)