Fenêtre immédiate Visual Studio: comment voir plus que les 100 premiers éléments

88

J'essaie de voir les propriétés d'un objet avec plus de 300 propriétés dans la fenêtre d'exécution de Visual Studio 2005. Seuls les 100 premiers éléments sont affichés, suivis de cette légende:

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

J'essaie de voir le reste des éléments, mais je ne peux pas le comprendre.

Je me rends compte que je pouvais les voir dans une fenêtre de surveillance, mais ce n'est pas la même chose.

DOK
la source

Réponses:

38

Je sais que c'est trop tard. Cependant, si vous ajoutez votre objet à la fenêtre de surveillance. Développez les propriétés, où toutes sont affichées. Puis Ctrl-A et Copier. Vous pouvez ensuite coller Excel pour obtenir une liste organisée des propriétés et de leurs valeurs.

Gene Whitaker
la source
Je me sabote depuis 5 ans en ne faisant pas ça.
secretwep
53

Je sais que c'était il y a presque des années, mais je me suis heurté à cela aujourd'hui. Parfois, il est utile de voir la liste dans la fenêtre immédiate plutôt que de regarder dans la fenêtre de surveillance. Vous pouvez facilement voir plus de résultats que les 100 premiers en utilisant:

yourList.Skip(100).ToArray()

Ce qui ne prend vraiment pas longtemps à écrire et fonctionne bien - cela m'a été utile.

Mise à jour : comme indiqué dans les commentaires ci-dessous, cette réponse est en fait erronée et applicable UNIQUEMENT aux collections et NON aux objets avec beaucoup de propriétés. Je le laisse ici car beaucoup de gens semblent l'avoir trouvé utile.

Ian Routledge
la source
Merci d'avoir ajouté au sujet. Comme vous l'avez découvert, les «vieilles» questions ont parfois des réponses aux problèmes d'aujourd'hui!
DOK
Vous ne savez pas ce que vous entendez par "yourList" ici? Voulez-vous dire l'objet que j'essaie de voir? Si tel est le cas, ne fonctionne pas pour moi dans Visual Studio Pro 2013
Kunal
yourList serait l'objet (collection) que vous essayez d'afficher et serait généralement de type IList <T> ou IEnumerable <T>. J'espère que ça t'as aidé.
Ian Routledge
2
Je suppose que cela fonctionne si vous souhaitez afficher les éléments restants dans une collection, mais cette réponse est inutile pour Propriétés, comme mentionné dans les questions d'origine. Je ne sais pas pourquoi c'est la réponse choisie. La réponse de Gene Whitaker ci-dessous est beaucoup plus utile à l'OMI.
Simon ML
1
Bon point, vous avez raison, cette réponse est en fait fausse! Ont ajouté un commentaire de mise à jour - n'hésitez pas à modifier etc
Ian Routledge
16

La fenêtre immédiate a été conçue pour être un outil de visualisation rapide. Si vous souhaitez voir plus de détails, vous devrez les afficher dans la fenêtre de surveillance ou dans la fenêtre de surveillance rapide.

Une autre option consiste à écrire un complément Visual Studio qui fonctionne de la même manière que la fenêtre d'exécution, mais qui a plus d'options.

Gabriel McAdams
la source
Merci. J'espérais avoir oublié quelque chose de simple, quelque chose qui n'implique pas tellement de cliquer, quelque chose qui faciliterait le défilement de centaines d'éléments. Je pense que vous avez identifié les meilleures alternatives.
DOK
1
@DOK: Il y a maintenant une meilleure réponse à cette question qui mérite peut-être d'être acceptée.
Eric J.
@Gabriel Était-il vraiment conçu pour être un outil de visualisation rapide? Cela semble être bien plus que cela, bien que cela ait été et soit utile pour cette capacité. Il me semble unique et utile pour l'évaluation, à la fois prémonitoire et spéculative. Je crois que c'est plus qu'une machine "What Is" avec laquelle visualiser, mais une machine "What If" avec laquelle explorer.
G DeMasters
4

Je crée toujours une méthode d'extension pour exporter des objets au format xml lors d'un débogage comme celui-ci. C'est très utile pour dépanner les données d'objets. Voici ce que j'utilise:

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();
}

Ce n'est pas une preuve complète à 100%, mais la plupart du temps, c'est parfait. Il créera un fichier xml dans le répertoire de l'application avec le nom des objets comme nom de fichier. Dans la fenêtre immédiate, vous pouvez simplement taper le nom de l'objet puis .SerializeToXML ().

donc: myList.SerializeToXML ()

John
la source