Janela imediata do Visual Studio: como ver mais do que os primeiros 100 itens

88

Estou tentando ver as propriedades de um objeto com mais de 300 propriedades na Janela Imediata do Visual Studio 2005. Apenas os primeiros 100 itens são exibidos, seguidos por esta legenda:

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

Estou tentando ver o resto dos itens, mas não consigo descobrir.

Percebo que posso ver isso em uma janela Watch, mas não é a mesma coisa.

DOK
fonte

Respostas:

38

Eu sei que é tarde demais. No entanto, se você adicionar seu objeto à janela de observação. Expanda as propriedades, onde todas são exibidas. Em seguida, Ctrl-A e Copiar. Você pode então colar no Excel para obter uma lista organizada de propriedades e seus valores.

Gene Whitaker
fonte
Eu tenho me sabotado por 5 anos por não fazer isso.
secretwep de
53

Sei que isso foi há quase anos, mas me deparei com isso hoje. Às vezes, é útil ver a lista na janela imediata em vez de olhar na janela de observação. Você pode ver facilmente mais resultados do que os primeiros 100 usando:

yourList.Skip(100).ToArray()

O que realmente não leva muito tempo para escrever e funciona bem - foi útil para mim.

Atualização : Como apontado nos comentários abaixo, esta resposta está realmente errada e aplicável SOMENTE a coleções e NÃO a objetos com muitas propriedades. Estou deixando aqui porque muitas pessoas parecem ter achado útil.

Ian Routledge
fonte
Obrigado por adicionar ao assunto. Como você descobriu, às vezes as perguntas "antigas" têm respostas para os problemas de hoje!
DOK
Não tem certeza do que você quer dizer com "suaLista" aqui? Você quer dizer o objeto que estou tentando ver? Se sim, não funciona para mim no Visual Studio Pro 2013
Kunal
yourList seria o objeto (coleção) que você está tentando visualizar e normalmente seria do tipo IList <T> ou IEnumerable <T>. Espero que ajude.
Ian Routledge
2
Acho que funciona se você deseja exibir os itens restantes em uma coleção, mas essa resposta é inútil para Propriedades, conforme mencionado nas perguntas originais. Não sei por que essa foi a resposta escolhida. A resposta de Gene Whitaker abaixo é muito mais útil da IMO.
Simon ML de
1
Justo, você está certo, esta resposta está realmente errada! Adicionou um comentário de atualização - sinta-se à vontade para alterar etc
Ian Routledge
16

A janela imediata foi projetada para ser uma ferramenta de visualização rápida. Se você deseja ver mais detalhes, você terá que visualizá-los na Watch Window ou na Quick Watch Window.

Outra opção é escrever um Visual Studio AddIn que opere de forma semelhante à janela Immediate, mas tem mais opções.

Gabriel McAdams
fonte
Obrigado. Eu esperava ter simplesmente esquecido algo simples, algo que não envolvesse tantos cliques, algo que tornasse mais fácil percorrer centenas de itens. Acho que você identificou as melhores alternativas.
DOK
1
@DOK: Há uma resposta melhor para essa pergunta agora que pode valer a pena ser aceita.
Eric J.
@Gabriel Foi realmente projetado para ser uma ferramenta de visualização rápida? Parece ser muito mais do que isso, embora tenha e seja útil para essa capacidade. Parece ser único e útil para mim para avaliação, tanto presciente quanto especulativa. Acredito que seja mais do que uma máquina de "o que é" para ver, mas uma máquina de "e se" para explorar.
G DeMasters
4

Sempre crio um método de extensão para exportar objetos para xml ao depurar como este. É muito útil para solucionar problemas de dados de objeto. Aqui está o que eu uso:

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

Não é uma prova 100% completa, mas na maioria das vezes é perfeita. Ele criará um arquivo xml no diretório do aplicativo com o nome do objeto como o nome do arquivo. Na janela imediata, você pode simplesmente digitar o nome do objeto e, em seguida, .SerializeToXML ().

então: myList.SerializeToXML ()

John
fonte