Używam Console.WriteLine () z bardzo prostej aplikacji testowej WPF, ale kiedy wykonuję aplikację z wiersza poleceń, nic nie jest zapisywane w konsoli. Czy ktoś wie, co może się tutaj dziać?
Mogę to odtworzyć, tworząc aplikację WPF w VS 2008 i po prostu dodając Console.WriteLine („tekst”) w dowolnym miejscu, które zostanie wykonane. Jakieś pomysły?
Teraz potrzebuję tylko czegoś tak prostego jak Console.WriteLine (). Zdaję sobie sprawę, że mógłbym użyć log4net lub innego rozwiązania do logowania, ale naprawdę nie potrzebuję tak dużej funkcjonalności dla tej aplikacji.
Edycja: Powinienem był pamiętać, że Console.WriteLine () jest przeznaczona dla aplikacji konsolowych. No cóż, żadnych głupich pytań, prawda? :-) Na razie użyję tylko System.Diagnostics.Trace.WriteLine () i DebugView.
Odpowiedzi:
Będziesz musiał ręcznie utworzyć okno konsoli, zanim faktycznie wywołasz jakiekolwiek metody Console.Write. Spowoduje to zainicjowanie konsoli do prawidłowego działania bez zmiany typu projektu (co w przypadku aplikacji WPF nie będzie działać).
Oto kompletny przykład kodu źródłowego, jak może wyglądać klasa ConsoleManager i jak można jej używać do włączania / wyłączania konsoli, niezależnie od typu projektu.
W przypadku następującej klasy wystarczy
ConsoleManager.Show()
gdzieś napisać, zanim zadzwonisz doConsole.Write
...źródło
SetConsoleCtrlHandler
funkcja, która pozwala otrzymywać powiadomienia oCTRL_CLOSE_EVENT
zdarzeniu, ale nie możesz nic z nią zrobić, nic nie pozwala na kontynuowanie aplikacji. Zostaniesz zamknięty. Jeśli masz ochotę włamać się, prawdopodobnie możesz zamienić program obsługi komunikatów systemu Windows na proces konsoli i po prostu porzucić komunikat WM_CLOSE. Nigdy tego nie próbowałem, ale może zadziałać. To tylko kolejne okno, ale powiedziawszy to, chyba że chcesz zająć się tym pomysłem, prawdopodobnie lepiej poświęć wysiłek na zrobienie czegoś innego.Kliknij prawym przyciskiem myszy projekt, „Właściwości”, zakładkę „Aplikacja”, zmień „Typ wyjścia” na „Aplikacja konsolowa”, a wtedy również będzie miała konsolę.
źródło
Możesz użyć
Spowoduje to wyświetlenie okna „Dane wyjściowe” w programie Visual Studio (podczas debugowania).
upewnij się, że zestaw diagnostyczny zawiera:
źródło
Console.WriteLine
ogóle nie jest przeznaczona dla aplikacji WPF i jest przeznaczona tylko dla aplikacji wiersza polecenia.Chociaż John Leidegren wciąż odrzuca ten pomysł, Brian ma rację. Właśnie uruchomiłem go w programie Visual Studio.
Aby być wyczyszczonym, aplikacja WPF nie tworzy domyślnie okna konsoli.
Musisz utworzyć aplikację WPF, a następnie zmienić OutputType na „Console Application”. Po uruchomieniu projektu zobaczysz okno konsoli z oknem WPF przed nim.
Nie wygląda to zbyt ładnie, ale uznałem to za pomocne, ponieważ chciałem, aby moja aplikacja była uruchamiana z wiersza poleceń z informacją zwrotną, a następnie dla niektórych opcji poleceń wyświetliłbym okno WPF.
źródło
Możliwe jest wyświetlenie danych wyjściowych przeznaczonych dla konsoli przy użyciu przekierowania wiersza poleceń .
Na przykład:
zapisze całą zawartość do
output.txt
pliku.źródło
Stary post, ale natknąłem się na to, więc jeśli próbujesz wyprowadzić coś do wyjścia w projekcie WPF w programie Visual Studio, współczesna metoda to:
Uwzględnij to:
I wtedy:
źródło
Używam Console.WriteLine () do użycia w oknie Output ...
źródło
Stworzyłem rozwiązanie, pomieszałem informacje z różnych postów.
Jest to formularz, który zawiera etykietę i jedno pole tekstowe. Dane wyjściowe konsoli są przekierowywane do pola tekstowego.
Istnieje również klasa o nazwie ConsoleView, która implementuje trzy metody publics: Show (), Close () i Release (). Ostatni służy do pozostawienia otwartej konsoli i aktywacji przycisku Zamknij, aby wyświetlić wyniki.
Formularze nazywa się FrmConsole. Oto kod XAML i C #.
Użycie jest bardzo proste:
Aby otworzyć konsolę. Posługiwać się:
Do wyprowadzania tekstu do konsoli.
Posługiwać się:
Aby zamknąć konsolę.
Pozostawia otwartą konsolę i włącza przycisk Zamknij
XAML
Kod okna:
kod klasy ConsoleView
Mam nadzieję, że ten wynik będzie przydatny.
źródło
Sprawdź ten post, był dla mnie bardzo pomocny. Pobierz przykładowy kod:
http://www.codeproject.com/Articles/335909/Embedding-a-Console-in-aC-Application
źródło
O ile wiem, Console.WriteLine () jest tylko dla aplikacji konsolowych. Myślę, że to twój problem.
źródło