Copier les valeurs des objets dans le mode de débogage Visual Studio

en mode de débogage Visual Studio, il est possible de survoler les variables pour afficher leur valeur, puis de cliquer avec le bouton droit de la souris sur" Copier"," Copier L'Expression "ou"Copier la valeur".

dans le cas où la variable est un objet et pas seulement un type de base, il y a un signe + pour étendre et explorer l'objet. Il y a un moyen de copier tout ça dans le bloc-notes?

92
demandé sur Farinha 2010-05-28 13:46:19

7 réponses

dans la fenêtre immédiate, tapez

?nom_du_variable

cela imprimera tout , et vous pouvez copier manuellement cela n'importe où que vous voulez, ou utilisez les fonctionnalités de journalisation de la fenêtre immédiate pour l'écrire automatiquement dans un fichier.

UPDATE : je suppose que vous vous demandiez comment copier / coller la structure imbriquée des valeurs pour que vous puissiez soit faire une recherche textuelle, ou pour que vous puissiez le sauvegarder sur le côté et ensuite comparer l'état de l'objet à celui-ci. Si j'ai raison, vous pourriez vouloir vérifier l'extension commerciale de Visual Studio que j'ai créé, appelé OzCode , qui vous permet de faire ces choses beaucoup plus facilement à travers les fonctionnalités de "recherche" et "comparer".

UPDATE 2 pour répondre À @ppumkin de la question, ou nouvelle EAP a une nouvelle fonction d'Exportation permet aux utilisateurs de Exportez les valeurs des variables vers le code JSON, XML, Excel ou C#.

divulgation complète: je suis le co-créateur de l'outil que j'ai décrit ici.

141
répondu Omer Raviv 2016-07-20 15:32:54
19
répondu Animesh 2015-04-16 02:58:58

vous pouvez exécuter ci-dessous le code dans la fenêtre immédiate et il exportera dans un fichier xml la représentation XML sérialisée d'un objet:

(new System.Xml.Serialization.XmlSerializer(obj.GetType())).Serialize(new System.IO.StreamWriter(@"c:\temp\text.xml"), obj)

Source: Visual Studio comment sérialiser l'objet à partir du débogueur

19
répondu Bat_Programmer 2017-05-23 12:02:46

Pas exactement ce que vous me demandez, mais vous pouvez ajouter une montre pour cet objet, et dans la fenêtre espion, développez et sélectionnez tout ce que vous voulez copier, puis de le copier.

15
répondu PMN 2010-05-28 09:52:13

en utilisant les attributs pour décorer vos classes et méthodes vous pouvez avoir une valeur spécifique de votre affichage d'objet pendant le débogage avec l'attribut DebuggerDisplay e.g.

[DebuggerDisplay("Person - {Name} is {Age} years old")]
public class Person
{
  public string Name { get; set; }
  public int Age { get; set; }
}
4
répondu Dave Anderson 2010-05-28 10:06:36

Google m'a mené à cette question de 8 ans et j'ai fini par utiliser ObjectDumper pour obtenir quelque chose de très similaire à la copie-coller des données de débogueur. C'était un jeu d'enfant.

je connais la question posée spécifiquement sur les informations du débogueur , mais ObjectDumper donne des informations qui sont essentiellement les mêmes. Je suppose que ceux qui google cette question sont comme moi et juste besoin des données à des fins de débogage et peu importe que cela vienne techniquement du débogueur ou non.

0
répondu Jesse Hufstetler 2018-04-24 15:37:28

j'utilise toujours:

string myJsonString = JsonConvert.SerializeObject(<some object>);

ensuite je copie la valeur de la chaîne de caractères qui, malheureusement, copie aussi les slashs arrière.

pour enlever les backlashs allez ici: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_replace

puis dans l'élément <p id="demo">Visit Microsoft!</p> remplacer le texte avec le texte que vous avez copié. remplacer ensuite la ligne var res = str.replace("Microsoft", "W3Schools"); par

."
var res = str.replace(/\/g, '')

Exécutez ces nouvelles modifications, mais n'oubliez pas de cliquer sur le bouton "Essayer" à droite.

Maintenant vous devez avoir tout le texte de l'objet dans le format json que vous pouvez déposer dans un formatteur json comme http://jsonformatter.org ou pour créer un POCO vous pouvez maintenant utiliser http://json2csharp.com/

0
répondu Helzgate 2018-08-06 16:38:38