Podczas wykonywania aplikacji konsolowej w Javie z Eclipse widzę, że dane wyjściowe są umieszczane w polu tekstowym w samym IDE, zamiast wyświetlać konsolę, jak w Visual Studio. Jest to przydatne, ponieważ nawet po zamknięciu programu nadal mogę dobrze wykorzystać tekst, który został w nim napisany, ponieważ nie zostanie on usunięty, dopóki nie uruchomię go ponownie. Czy w Visual Studio można osiągnąć coś takiego? Wiem to zamiast robić
System.Console.WriteLine(str);
mogę zrobić
System.Diagnostics.Debug.WriteLine(str);
ale to nie to samo, ponieważ dostajesz dużo "śmieci" w oknie Output, jak wszystkie załadowane symbole i tym podobne.
Co więcej, czy możliwe jest wykonanie wszystkiego w samym IDE podczas uruchamiania aplikacji zamiast uruchamiania konsoli?
c#
visual-studio
console
pożarł elizjum
źródło
źródło
Odpowiedzi:
W oknie dialogowym Narzędzia -> Opcje programu Visual Studio -> Debugowanie -> zaznacz opcję „Przekieruj cały tekst okna wyjściowego do okna bezpośredniego”.
źródło
W oknie dialogowym opcji programu Visual Studio -> Debugowanie -> zaznacz opcję „Przekieruj cały tekst okna wyjściowego do okna bezpośredniego”. Następnie przejdź do ustawień projektu i zmień typ z „Aplikacja konsoli” na „Aplikacja Windows”. W tym momencie program Visual Studio nie otwiera już okna konsoli, a dane wyjściowe są przekierowywane do okna danych wyjściowych w programie Visual Studio. Nie możesz jednak zrobić niczego „kreatywnego”, na przykład zażądać klucza lub wprowadzenia tekstu lub wyczyścić konsolę - otrzymasz wyjątki w czasie wykonywania.
źródło
Console.ReadKey()
jest po prostu śmieszne!Output type
moją aplikację z aplikacji Windows do konsoli, okno konsoli nie jest widoczne, gdy uruchamiam moją aplikację. Jestem w stanie debugować aplikację, aMain
punkt wejścia również jest trafiony. Przywróciłem również ustawienie opcji wspomniane w tym poście, ale bezskutecznie. Używam wersji społeczności VS 2017. Zgubiłem okno konsoli (szlochając).Posługiwać się
System.Diagnostics.Trace
W zależności od podłączonych odbiorników dane wyjściowe śledzenia mogą trafiać do okna debugowania, konsoli, pliku, bazy danych lub wszystkich naraz. Możliwości są dosłownie nieograniczone, ponieważ wdrożenie własnego TraceListener jest niezwykle proste.
źródło
Ludzie, czas sprawdzić najnowsze wersje programu Visual Studio. Najbardziej sugerowane rozwiązanie, które wcześniej nie działało dla niektórych z was, może teraz działać.
W programie Visual Studio 2017 ( wersja 15.4.2 i nowsze )
Tools > Options > Debugging > General > (Check Box) Redirect all Output Window text to Immediate Window
działało dla mnie.Kilka uwag: 1. Aby wyświetlić okno bezpośrednie, upewnij się, że jesteś w trybie debugowania . 2. Powinny być teraz dostępne 3 inne narzędzia do debugowania, a mianowicie stos wywołań, punkty przerwania i okno poleceń, jak pokazano poniżej:
Wszystkiego najlepszego!
źródło
Możesz utworzyć aplikację opakowującą, którą uruchamiasz zamiast bezpośrednio uruchamiać swoją prawdziwą aplikację. Aplikacja opakowująca może nasłuchiwać wyjścia standardowego i przekierowywać wszystko do programu Trace. Następnie zmień ustawienia uruchamiania, aby uruchomić opakowanie i przekazać ścieżkę do prawdziwej aplikacji do uruchomienia.
Można również ustawić automatyczne dołączanie debugera przez opakowanie do nowego procesu, jeśli debuger jest dołączony do opakowania.
źródło
Wiem, że to tylko kolejna odpowiedź, ale pomyślałem, że napiszę coś dla nowych programistów sieci Web, którzy mogą być zdezorientowani częścią „Zmiana na aplikację Windows”, ponieważ myślę, że domyślnie aplikacja MVC w Visual Studio 2013 domyślnie jest to typ wyjściowy biblioteki klas.
Moja aplikacja internetowa jest domyślnie ustawiona jako typ wyjściowy „Biblioteka klas”. Nie musisz tego zmieniać. Wszystko, co musiałem zrobić, to postępować zgodnie z sugestiami, aby przejść do Narzędzia> Opcje> Debugowanie> Przekieruj cały tekst okna wyjściowego do okna bezpośredniego. Następnie skorzystałem z powyższej
System.Diagnostics.Trace
sugestii Joela Coehoorna.źródło
Proste rozwiązanie, które działa dla mnie, do pracy z możliwością konsoli (ReadKey, String with Format i arg itp.) Oraz do przeglądania i zapisywania danych wyjściowych:
Piszę TextWriter, który pisze do
Console
i doTrace
i zamieniam naConsole.Out
to.jeśli używasz Dialog -> Debugging -> Zaznacz „Przekieruj cały tekst z okna wyjściowego do okna bezpośredniego”, otrzymasz go w oknie bezpośrednim i całkiem czysty.
mój kod: na początku mojego kodu:
i klasa:
Uwaga: zastępuję to, czego potrzebowałem, więc jeśli napiszesz inne typy, powinieneś zastąpić więcej
źródło
dotyczące
System.Diagnostics.Debug
tworzenia dużej ilości „śmieci” w oknie Output: Możesz to wyłączyć, klikając prawym przyciskiem myszy w oknie wyjściowym. Np. Istnieje pozycja "Komunikaty ładowania modułu", którą chcesz wyłączyć i "Wyjście programu", którą chcesz zachować.źródło
Masz na to trzy możliwości, ale nie jest to trywialne. Główną ideą wszystkich IDE jest to, że wszystkie są rodzicami procesów potomnych (debugowania). W takim przypadku można manipulować za pomocą standardowego wejścia, wyjścia i obsługi błędów. Tak więc IDE uruchamiają aplikacje potomne i przekierowują do wewnętrznego okna wyjściowego. Wiem o jeszcze jednej możliwości, ale nadejdzie w przyszłości
źródło
Jeśli potrzebujesz danych wyjściowych z Console.WriteLine, a tekst z okna Przekieruj wszystkie dane wyjściowe do okna bezpośredniego nie działa i musisz znać dane wyjściowe testów ze zintegrowanego eksploratora testów, używając NUnit.Framework, nasz problem został już rozwiązany w VS 2017 :
Przykład zaczerpnięty z C # In Depth autorstwa Jona Skeeta: To daje takie dane wyjściowe w Eksploratorze tekstu:
Kiedy klikniemy na Blue Output, pod Elapsed Time, po prawej stronie, otrzymamy to:
Wyjście standardowe to nasze pożądane wyjście, wyprodukowane przez Console.WriteLine.
Działa dla konsoli i aplikacji Windows Form w VS 2017, ale tylko dla danych wyjściowych generowanych dla Eksploratora testów podczas debugowania lub uruchamiania; w każdym razie jest to moja główna potrzeba wyjścia Console.WriteLine.
źródło
Zamiast tego możesz zebrać dane wyjściowe w wyniku testu.
Nie możesz podać danych wejściowych, ale możesz łatwo dostarczyć kilka testów z różnymi argumentami wiersza poleceń, a każdy test zbiera dane wyjściowe.
Jeśli Twoim celem jest debugowanie, jest to łatwy sposób oferowania powtarzalnego scenariusza debugowania.
źródło
Krok 1: Kliknij prawym przyciskiem myszy nazwę projektu w Eksploratorze rozwiązań, a następnie ustaw typ danych wyjściowych jako aplikację okna
Krok 2: Debuguj -> Opcje .. -> Debugowanie (rozwiń) -> Ogólne -> Przekieruj cały tekst z okna wyjściowego do okna bezpośredniego
źródło