Ich habe das Tool xsd.exe verwendet, um eine Klasse basierend auf meinem XML-Schema zu generieren. Es hat eine öffentliche partielle Klasse mit DebuggerStepThroughAttribute erstellt. Nun, ich habe eine andere partielle Klassendatei für diese Klasse erstellt, um meinen benutzerdefinierten Code zu schreiben und möchte in diesen Code, den ich geschrieben habe, einsteigen, aber es scheint, dass der Debugger das Step-through-Attribut auf meine partielle Klasse als anwendet Gut. Gibt es einen einfachen Weg für mich, in meinen Code einzutreten, ohne das Attribut jedes Mal manuell zu entfernen, wenn ich die partielle Klasse neu generiere?Verhindern, dass DebuggerStepThroughAttribute auf meine nicht-xsd-generierte partielle Klasse angewendet wird?
17
A
Antwort
11
- Sie können den Debugger veranlassen, dieses Attribut unter Extras-> Optionen-> Debugger-> Allgemein zu ignorieren. Deaktivieren Sie "Nur meinen Code aktivieren (nur verwaltete)".
- Sie könnten auch die partielle Klasse als Wrapper für eine andere Klasse/Methoden verwenden. Die Methoden in der partiellen Klasse wären nur Stubs, die die tatsächlichen Methoden in der neuen Klasse aufrufen. Der Debugger überspringt die Methode, die mit dem Attribut versehen ist, erlaubt es Ihnen jedoch, die durchbrochene Klasse zu durchlaufen. Beispiel unten ...
//
[DebuggerStepThrough]
static void DebuggerStepThroughInPartialClass()
{
WrappedClass.NonDebuggerStepThrough();
}
class WrappedClass{
static void NonDebuggerStepThroughInNewClass()
{
int bar = 0;
bar++;
}
}
0
beste Weg ist, einfach die Attribut Zeilen aus dem generierten Code zu entfernen. Der einfachste Weg IMHO ist die Verwendung eines Alias im Befehlsfenster.
Beispiel:
1) Öffnen Sie das Befehlsfenster (STRG + A)
2) Typ: (VB Version)
alias removenodebug Edit.Replace "(?([^\r\n])\s)*System.Diagnostics.DebuggerStepThroughAttribute\(\),\s*_\r\n(?([^\r\n])\s)*" "" /d /regex /all
3), jetzt haben Sie einen Alias & zu finden Ersetzen Sie diese Zeilen im aktuellen Dokument. Sie können einfach in dem Befehlsfenster eingeben:
removenodebug
Und die Attributlinien verschwunden sind.
Hinweis: Der in diesem Beispiel verwendete reguläre Ausdruck ist für VB-Code gedacht, sollte aber nicht zu schwer für C# konvertiert werden.
Ich hatte auf einige Attribute gehofft, die ich auf meine Teilklasse legen konnte, was es mir erlauben würde, hineinzugehen, aber ich denke, das ist keine Option. Ich werde das Attribut wahrscheinlich nur jedes Mal manuell aus der generierten Klasse entfernen, wenn ich es generieren muss, was wahrscheinlich nicht allzu oft der Fall ist. Danke für die Antwort! – Lyndal
Wenn Sie die Option "Nur meinen Code aktivieren" deaktivieren, sollten Sie feststellen, dass der Haltepunkt sofort in einen festen braunen Kreis übergeht, der darauf hinweist, dass er jetzt debuggt werden kann –