Копирование значений объектов в режиме отладки Visual Studio
в режиме отладки Visual Studio можно навести указатель мыши на переменные, чтобы показать их значение, а затем щелкнуть правой кнопкой мыши "копировать", "копировать выражение" или "копировать значение".
в случае, если переменная является объектом, а не только базовым типом, есть знак + для расширения и изучения объекта. Это есть способ скопировать все в буфер обмена?
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/