Копирование значений объектов в режиме отладки Visual Studio


в режиме отладки Visual Studio можно навести указатель мыши на переменные, чтобы показать их значение, а затем щелкнуть правой кнопкой мыши "копировать", "копировать выражение" или "копировать значение".

в случае, если переменная является объектом, а не только базовым типом, есть знак + для расширения и изучения объекта. Это есть способ скопировать все в буфер обмена?

7 92

7 ответов:

в окне immediate, типа

?name_of_variable

Это выводит все, и вы можете вручную скопировать это в любом месте вы хотите, или использовать немедленные функции ведения журнала окна, чтобы автоматически записать его в файл.

обновление: Я предполагаю, что вы спрашивали, Как скопировать / вставить вложенную структуру значений, чтобы вы могли либо искать ее текстуально, либо сохранить ее на стороне, а затем позже сравните состояние объекта с ним. Если я прав, вы можете проверить коммерческое расширение для Visual Studio, которое я создал, под названием OzCode, что позволяет вам делать эти вещи гораздо проще через функции" поиск "и" сравнение".

обновление 2 чтобы ответить на вопрос @ ppumkin, или новая имеет новую функцию экспорта позволяет пользователям экспортировать значения переменных в код Json, XML, Excel или C#.

полный раскрытие информации: я соавтор инструмента, который я описал здесь.

есть недавний экспортер объектов расширения, который делает это удобно.

http://www.omarelabd.net/exporting-objects-from-the-visual-studio-debugger/

расширение: https://visualstudiogallery.msdn.microsoft.com/c6a21c68-f815-4895-999f-cd0885d8774f

вы можете запустить ниже код в непосредственном окне, и он будет экспортировать в xml-файл сериализованное XML-представление объекта:

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

источник: Visual Studio как сериализовать объект из отладчика

Не совсем то, что вы просите, но вы можете добавить часы для этого объекта, и в окно смотреть, разверните и выберите все, что вы хотите скопировать, а затем скопируйте его.

С помощью атрибуты для украшения ваших классов и методов вы можете иметь определенное значение из отображения объекта во время отладки с помощью атрибут DebuggerDisplay например

[DebuggerDisplay("Person - {Name} is {Age} years old")]
public class Person
{
  public string Name { get; set; }
  public int Age { get; set; }
}

Google привел меня к этому 8-летнему вопросу, и я в конечном итоге использовал ObjectDumper для достижения чего-то очень похожего на копирование-вставка данных отладчика. Это был легкий ветерок.

Я знаю вопрос, заданный конкретно об информации из отладчик, но ObjectDumper дает информацию, которая в основном то же самое. Я предполагаю, что те, кто google этот вопрос, как и я, просто нуждаются в данных для отладки и не заботятся о том, технически ли это приходит от отладчика или нет.

Я всегда использую:

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

затем я копирую строковое значение, которое, к сожалению, также копирует задние косые черты.

для удаления люфтов перейдите сюда: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_replace

затем в <p id="demo">Visit Microsoft!</p> элемент заменить текст с текстом, который вы скопировали. затем замените var res = str.replace("Microsoft", "W3Schools"); строку с

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

запустите эти новые изменения, но не забудьте нажать кнопку " Попробовать право.

теперь у вас должен быть весь текст объекта в формате json, который вы можете поместить в форматер json, например http://jsonformatter.org или для создания POCO теперь можно использовать http://json2csharp.com/