Visual Studio-Sofortfenster: Anzeigen von mehr als den ersten 100 Elementen

86

Ich versuche, die Eigenschaften eines Objekts mit über 300 Eigenschaften im Direktfenster von Visual Studio 2005 anzuzeigen. Es werden nur die ersten 100 Elemente angezeigt, gefolgt von dieser Beschriftung:

 < More... (The first 100 of 306 items were displayed.) >

Ich versuche, den Rest der Gegenstände zu sehen, kann es aber nicht herausfinden.

Mir ist klar, dass ich diese in einem Überwachungsfenster sehen konnte, aber das ist nicht dasselbe.

DOK
quelle

Antworten:

37

Ich weiß, das ist viel zu spät. Wenn Sie jedoch Ihr Objekt zum Überwachungsfenster hinzufügen. Erweitern Sie die Eigenschaften, in denen alle angezeigt werden. Dann Strg-A und Kopieren. Sie können dann Excel einfügen, um eine organisierte Liste der Eigenschaften und ihrer Werte zu erhalten.

Gene Whitaker
quelle
Ich sabotiere mich seit 5 Jahren, indem ich das nicht tue.
secretwep
51

Ich weiß, dass dies vor fast zu Jahren war, aber ich bin heute darauf gestoßen. Manchmal ist es nützlich, die Liste im unmittelbaren Fenster zu sehen, anstatt in das Überwachungsfenster zu schauen. Sie können leicht mehr Ergebnisse als die ersten 100 sehen, indem Sie Folgendes verwenden:

yourList.Skip(100).ToArray()

Das Schreiben dauert wirklich nicht lange und funktioniert gut - war nützlich für mich.

Update : Wie in den Kommentaren unten ausgeführt, ist diese Antwort tatsächlich falsch und gilt NUR für Sammlungen und NICHT für Objekte mit vielen Eigenschaften. Ich lasse es hier, da viele Leute es nützlich gefunden haben.

Ian Routledge
quelle
Vielen Dank für das Hinzufügen zum Thema. Wie Sie festgestellt haben, haben "alte" Fragen manchmal Antworten auf die heutigen Probleme!
DOK
Sie sind sich nicht sicher, was Sie hier mit "yourList" meinen? Meinen Sie das Objekt, das ich anzeigen möchte? Wenn ja, funktioniert nicht für mich in Visual Studio Pro 2013
Kunal
Ihre Liste ist das Objekt (Sammlung), das Sie anzeigen möchten, und normalerweise vom Typ IList <T> oder IEnumerable <T>. Hoffentlich hilft das.
Ian Routledge
2
Ich denke, das funktioniert, wenn Sie verbleibende Elemente in einer Sammlung anzeigen möchten, aber diese Antwort ist für Eigenschaften nutzlos, wie in den ursprünglichen Fragen erwähnt. Ich weiß nicht, warum dies die gewählte Antwort ist. Gene Whitaker Antwort unten ist viel nützlicher IMO.
Simon ML
1
Fairer Punkt, Sie haben Recht, diese Antwort ist tatsächlich falsch! Haben einen Update-Kommentar hinzugefügt - zögern Sie nicht zu ändern usw.
Ian Routledge
16

Das unmittelbare Fenster wurde als Schnellansichtstool konzipiert. Wenn Sie mehr Details sehen möchten, müssen Sie diese entweder im Überwachungsfenster oder im Schnellüberwachungsfenster anzeigen.

Eine weitere Option ist das Schreiben eines Visual Studio-AddIn, das ähnlich wie das Direktfenster funktioniert, jedoch über mehr Optionen verfügt.

Gabriel McAdams
quelle
Vielen Dank. Ich hatte gehofft, dass ich gerade etwas Einfaches übersehen hatte, etwas, bei dem nicht so viel herumgeklickt wurde, etwas, das es einfach machen würde, durch Hunderte von Elementen zu scrollen. Ich denke, Sie haben die besten Alternativen identifiziert.
DOK
1
@DOK: Es gibt jetzt eine bessere Antwort auf diese Frage, die es wert sein könnte, akzeptiert zu werden.
Eric J.
4

Ich erstelle immer eine Erweiterungsmethode, um Objekte nach XML zu exportieren, wenn ich so debugge. Dies ist sehr nützlich für die Fehlerbehebung bei Objektdaten. Folgendes benutze ich:

public static void SerializeToXML(this object entity)
{
    System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(entity.GetType());

    System.IO.StreamWriter file = new System.IO.StreamWriter(string.Format(@"{0}\{1}.xml", Directory.GetCurrentDirectory(), entity.GetType().Name));
    writer.Serialize(file, entity);
    file.Close();
}

Es ist kein 100% vollständiger Beweis, aber meistens ist es perfekt. Es wird eine XML-Datei im Anwendungsverzeichnis mit dem Objektnamen als Dateinamen erstellt. Im unmittelbaren Fenster können Sie einfach den Objektnamen und dann .SerializeToXML () eingeben.

also: myList.SerializeToXML ()

John
quelle