Okno programu Visual Studio Immediate: jak wyświetlić więcej niż pierwsze 100 elementów

88

Próbuję zobaczyć właściwości obiektu z ponad 300 właściwościami w bezpośrednim oknie programu Visual Studio 2005. Wyświetlanych jest tylko pierwszych 100 elementów, po których następuje ten podpis:

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

Próbuję zobaczyć pozostałe elementy, ale nie mogę tego rozgryźć.

Zdaję sobie sprawę, że mogłem je zobaczyć w oknie strażnika, ale to nie to samo.

DOK
źródło

Odpowiedzi:

38

Wiem, że to późno. Jeśli jednak dodasz swój obiekt do okna zegarka. Rozwiń właściwości, gdzie wszystkie są wyświetlane. Następnie Ctrl + A i Kopiuj. Następnie możesz wkleić w programie Excel, aby uzyskać uporządkowaną listę właściwości i ich wartości.

Gene Whitaker
źródło
Od 5 lat sabotuję siebie, nie robiąc tego.
Secretwep
53

Wiem, że to było prawie lata temu, ale dzisiaj się z tym spotkałem. Czasami lepiej jest zobaczyć listę w bezpośrednim oknie, zamiast patrzeć w okno zegarka. Możesz łatwo zobaczyć więcej wyników niż pierwszych 100, używając:

yourList.Skip(100).ToArray()

Który naprawdę nie zajmuje dużo czasu i działa dobrze - był dla mnie przydatny.

Aktualizacja : Jak wskazano w komentarzach poniżej, ta odpowiedź jest w rzeczywistości błędna i ma zastosowanie TYLKO do kolekcji, a NIE do obiektów z wieloma właściwościami. Zostawiam go tutaj, ponieważ wydaje się, że wiele osób uznało go za przydatne.

Ian Routledge
źródło
Dzięki za dodanie do tematu. Jak się przekonałeś, czasami „stare” pytania mają odpowiedzi na dzisiejsze problemy!
DOK
Nie wiesz, co masz na myśli, mówiąc tutaj „twoja lista”? Czy masz na myśli przedmiot, który próbuję obejrzeć? Jeśli tak, nie działa u mnie w Visual Studio Pro 2013
Kunal
yourList byłby obiektem (kolekcją), który próbujesz wyświetlić, i zwykle byłby typu IList <T> lub IEnumerable <T>. Mam nadzieję, że to pomoże.
Ian Routledge,
2
Wydaje mi się, że to działa, jeśli chcesz wyświetlić pozostałe elementy w kolekcji, ale ta odpowiedź jest bezużyteczna w przypadku właściwości, jak wspomniano w oryginalnych pytaniach. Nie wiem, dlaczego jest to wybrana odpowiedź. Odpowiedź Gene Whitaker poniżej jest znacznie bardziej przydatna IMO.
Simon ML
1
Słuszna uwaga, masz rację, ta odpowiedź jest w rzeczywistości błędna! Dodałem komentarz do aktualizacji - nie krępuj się zmieniać itp.
Ian Routledge,
16

Bezpośrednie okno zostało zaprojektowane jako narzędzie szybkiego podglądu. Jeśli chcesz zobaczyć więcej szczegółów, będziesz musiał wyświetlić je w oknie nadzoru lub oknie szybkiego nadzoru.

Inną opcją jest napisanie dodatku programu Visual Studio, który działa podobnie do okna bezpośredniego, ale ma więcej opcji.

Gabriel McAdams
źródło
Dzięki. Miałem nadzieję, że właśnie przeoczyłem coś prostego, coś, co nie wymaga tak częstego klikania, coś, co ułatwiłoby przewijanie setek pozycji. Myślę, że zidentyfikowałeś najlepsze alternatywy.
DOK
1
@DOK: Jest teraz lepsza odpowiedź na to pytanie, która może być warta przyjęcia.
Eric J.
@Gabriel Czy to naprawdę zostało zaprojektowane jako narzędzie szybkiego podglądu? Wydaje się, że jest o wiele więcej, chociaż ma i jest przydatny do tego. Wydaje się, że jest wyjątkowy i przydatny do oceny, zarówno proroczej, jak i spekulatywnej. Uważam, że to coś więcej niż maszyna typu „Co Jest”, za pomocą której można oglądać, ale maszyna „Co by było, gdyby” do eksploracji.
G DeMasters
4

Zawsze tworzę metodę rozszerzenia, aby eksportować obiekty do XML podczas debugowania w ten sposób. Jest to bardzo przydatne do rozwiązywania problemów z danymi obiektu. Oto czego używam:

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

Nie jest to w 100% pełny dowód, ale przez większość czasu jest doskonały. Utworzy plik xml w katalogu aplikacji z nazwą obiektu jako nazwą pliku. W bezpośrednim oknie możesz po prostu wpisać nazwę obiektu, a następnie .SerializeToXML ().

więc: myList.SerializeToXML ()

Jan
źródło