Окно Visual Studio Immediate: как увидеть более первых 100 элементов

88

Я пытаюсь увидеть свойства объекта с более чем 300 свойствами в окне Immediate Window Visual Studio 2005. Отображаются только первые 100 элементов, за которыми следует этот заголовок:

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

Я пытаюсь увидеть остальные предметы, но не могу понять.

Я понимаю, что могу видеть их в окне просмотра, но это не то же самое.

ДОК
источник

Ответы:

38

Я знаю, что уже поздно. Однако, если вы добавите свой объект в окно просмотра. Разверните свойства, где все отображается. Затем Ctrl-A и Копировать. Затем вы можете вставить Excel, чтобы получить организованный список свойств и их значений.

Джин Уитакер
источник
Я 5 лет саботировал себя, не делая этого.
secretwep
53

Я знаю, что это было почти много лет назад, но сегодня я столкнулся с этим. Иногда полезно видеть список в непосредственном окне, а не в окне просмотра. Вы можете легко увидеть больше результатов, чем первые 100, используя:

yourList.Skip(100).ToArray()

Что действительно не займет много времени, чтобы написать и хорошо работает - было полезно для меня.

Обновление : как указано в комментариях ниже, этот ответ на самом деле неверен и применим ТОЛЬКО к коллекциям, а НЕ к объектам с большим количеством свойств. Я оставляю его здесь, так как многие люди, кажется, сочли его полезным.

Ян Рутледж
источник
Спасибо, что добавили в тему. Как вы обнаружили, иногда «старые» вопросы дают ответы на сегодняшние проблемы!
DOK
Не знаете, что вы имеете в виду под "вашим списком"? Вы имеете в виду объект, который я пытаюсь просмотреть? Если да, то у меня не работает в Visual Studio Pro 2013
Кунал
yourList будет объектом (коллекцией), который вы пытаетесь просмотреть, и обычно имеет тип IList <T> или IEnumerable <T>. Надеюсь, это поможет.
Ян Рутледж
2
Я предполагаю, что это работает, если вы хотите отображать оставшиеся элементы в коллекциях, но этот ответ бесполезен для свойств, как упоминалось в исходных вопросах. Я не знаю, почему выбран именно такой ответ. Ответ Джина Уитакера, приведенный ниже, гораздо более полезен, ИМО.
Simon ML
1
Справедливо, вы правы, этот ответ на самом деле неверен! Добавили комментарий к обновлению - не стесняйтесь вносить поправки и т. Д.
Ian Routledge
16

Непосредственное окно было разработано как инструмент быстрого просмотра. Если вы хотите увидеть более подробную информацию, вам нужно будет просмотреть ее либо в окне просмотра, либо в окне быстрого просмотра.

Другой вариант - написать надстройку Visual Studio, которая работает аналогично Immediate Window, но имеет больше возможностей.

Габриэль Макадамс
источник
Спасибо. Я надеялся, что просто упустил из виду что-то простое, что-то, что не требует так много щелчков, что-то, что упростило бы просмотр сотен элементов. Думаю, вы определили лучшие альтернативы.
DOK
1
@DOK: Теперь есть лучший ответ на этот вопрос, который, возможно, достоин того, чтобы его приняли.
Эрик Дж.
@Gabriel Неужели это действительно инструмент для быстрого просмотра? Кажется, что это намного больше, хотя для этой возможности он есть и полезен. Это кажется мне уникальным и полезным для оценки, как дальновидной, так и умозрительной. Я считаю, что это больше, чем машина «Что есть», с помощью которой можно смотреть, но машина «Что, если», с помощью которой можно исследовать.
G DeMasters,
4

Я всегда создаю метод расширения для экспорта объектов в xml при такой отладке. Это очень полезно для устранения неполадок с данными объекта. Вот что я использую:

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

Это не 100% полное доказательство, но в большинстве случаев оно идеально. Он создаст XML-файл в каталоге приложения с именем объекта в качестве имени файла. В ближайшем окне вы можете просто ввести имя объекта, а затем .SerializeToXML ().

так: myList.SerializeToXML ()

Джон
источник