Dlaczego Console.Writeline i Console.Write nie działają w programie Visual Studio Express?

169

Po prostu otwieram aplikację konsolową i piszę

Console.WriteLine("Test");

Ale okno wyjściowe tego nie pokazuje. Idę do okna wyjściowego za pomocą Ctrl + W, O

Ale nic się nie pojawia po uruchomieniu programu, czy jestem szalony, czy nie jest to obsługiwane w Visual Studio 2010 Express?

foreyez
źródło
3
Jak Leifpowiedziano, znika, zanim będzie można go zobaczyć. UżyjConsole.ReadKey()
Xaqron,
Zobacz także stackoverflow.com/a/1583569/503688, aby zapoznać się z mechanizmem przekierowywania danych wyjściowych konsoli do okna danych wyjściowych debugowania.
jojo

Odpowiedzi:

301

Console.WriteLinezapisuje dane wyjściowe w oknie konsoli otwieranym przez aplikację (pomyśl o czarnym oknie z białym tekstem, który pojawia się po otwarciu wiersza polecenia). Spróbuj System.Diagnostics.Debug.WriteLinezamiast tego.

Adam Maras
źródło
26
Wynik debugowania pojawia się w oknie Output (Debug => Windows => Output). Mój nie był domyślnie otwarty.
Appulus
1
Jeśli w oknie konsoli nie ma danych wyjściowych, sprawdź również właściwości aplikacji na karcie Debuguj Opcje uruchamiania, aby upewnić się, że nie masz żadnych argumentów wiersza poleceń przekierowujących dane wyjściowe z konsoli.
Chad Miller,
I użyj narzędzia takiego jak technet.microsoft.com/en-us/sysinternals/debugview.aspx DebugView (dbgview), aby otrzymywać komunikaty debugowania, ponieważ nie pojawią się one w konsoli cmd.
Roger Deep
19

Przejdź do właściwości we własnym projekcie w Solution Exploreroknie i wybierz typ aplikacji, a następnie wyszukaj Output Type i zmień jej wartość Console Application. Spowoduje to wyświetlenie ekranu konsoli poza formularzem. Jeśli zamkniesz ekran konsoli, twój formularz również zostanie zamknięty.

Powodzenia.

Ibrahim
źródło
Uczyń mój dzień! Mogę teraz zapętlić moje zapytanie LINQ i pisać do konsoli, co jest szybkim i tanim sposobem na pobranie poprawnych danych do walki.
JustJohn
15

Być może konsola się oczyszcza. Próbować:

Console.WriteLine("Test");
Console.ReadLine();

Mam nadzieję, że pozostanie tam, dopóki nie naciśniesz Enter.

Leif Andersen
źródło
15

Brak satysfakcjonujących odpowiedzi.

System.Diagnostics.Debug.WriteLine() zapisze wiadomości w oknie Output: debug, ale tak wiele bzdur jest ciągle wrzucanych do tego okna przez każdy proces pod słońcem, to tak, jakbyś znajdował igłę w stogu siana, aby znaleźć TWOJE wiadomości.

Console.WriteLine()nie zapisuje w żadnym oknie w programie Visual Studio. Wydaje mi się, że zapisze do konsoli aplikacji tylko wtedy, gdy twoja aplikacja utworzy konsolę w pierwszej kolejności, tj. Jeśli jest to aplikacja konsoli.

Dlaczego narzędzia sprawiają, że proste zadanie polegające na zapisywaniu niektórych komunikatów debugowania po stronie serwera aplikacji sieci Web w kodzie .cs w oknie, które jest zasypane bzdurami, sprawia, że ​​znalezienie informacji jest prawie niemożliwe?

Paul Gorbas
źródło
6

Lub możesz debugować przez CTRL+F5to otworzy się ConsoleWindow czeka po wykonaniu ostatniej linii aż do naciśnięcia klawisza.

Javed Akram
źródło
8
Cóż, to nie jest tak naprawdę „debugowanie”, a jedynie uruchamianie aplikacji bez dołączania debuggera. : /
damian
5

Jest to bardziej niż prawdopodobne, ponieważ użyłeś konsoli w przestrzeni nazw. Na przykład tak:

namespace XYZApplication.Console
{
    class Program
    {
        static void Main(string[] args)
       {
            //Some code;             
       }
    }
}

Spróbuj usunąć go z przestrzeni nazw lub zamiast tego użyj pełnej przestrzeni nazw, np

   System.Console.Writeline("abc");
nadsy
źródło
1
Nie miałem żadnej innej konsoli w mojej aplikacji, ale dodawanie System.pomogło. Dzięki.
kolenda
4

Okno wyjściowe nie jest konsolą. Wypróbuj metody w programieSystem.Diagnostics.Debug

lesscode
źródło
4

W aplikacji Winforms obie metody:

System.Diagnostics.Debug.WriteLine("my string")

i

System.Console.WriteLine("my string")

napisz do okna wyjściowego.

W aplikacji AspNetCore System.Diagnostics.Debug.WriteLine("my string")zapisuje tylko w oknie danych wyjściowych.

user6849960
źródło
3

Wypróbuj ctrl + F5, zatrzyma ekran, dopóki nie naciśniesz dowolnego klawisza. pozdrowienia

Sumen Kr Mallick
źródło
2

Kliknij prawym przyciskiem myszy projekt w eksploratorze rozwiązań i kliknij „wyczyść”.

A teraz biegnij F5

Upewnij się, że kod jest taki jak poniżej:

Console.WriteLine("TEST");
Console.ReadLine();
akash
źródło
1

Podobny problem napotykam podczas wykonywania testu jednostkowego. Console.WriteLine()nie zapisał niczego w oknie wyjściowym VS.

Użycie System.Diagnostics.Debug.WriteLine()rozwiązało problem.

Peter Huber
źródło
1

Jeśli użyjesz Ctrl-F5 (uruchom bez debugowania), okno konsoli pozostanie otwarte z komunikatem „Naciśnij dowolny klawisz, aby kontynuować”. To najłatwiejszy sposób, aby zapobiec zamykaniu okna konsoli, aby można było zobaczyć dane wyjściowe konsoli.

Jeffrey Counts
źródło
1

Przejdź do menu Debug, wybierz Opcje i odznacz „Przekieruj cały tekst z okna wyjściowego do okna bezpośredniego”

user241636
źródło
0

Console.Writeline() pojawia się w wynikach debugowania (Debug => Windows => Output).

Svl2Nuk3
źródło
7
Nie, System.Diagnostics.Debug.WriteLine zapisuje do Debug => Windows => Output, ale nie do Console.WriteLine
Vitalii Korsakov
1
Osoba zadająca pytanie korzysta z aplikacji Console, gdzie Console.WriteLine () oczywiście pisze do Console, czyli okna aplikacji w kolorze czarnym, przypominającego okno DOS. Console.WriteLine () zapisuje dane w oknie danych debugowania tylko wtedy, gdy nie jest aplikacją konsoli.
Peter Huber
„Console.WriteLine () zapisuje w oknie danych debugowania tylko wtedy, gdy nie jest aplikacją konsoli”. Czemu?
sydd
0

Jeśli tworzysz aplikację wiersza poleceń, możesz również użyć Console.ReadLine()na końcu kodu, aby poczekać na naciśnięcie klawisza „Enter” przed zamknięciem okna konsoli, aby móc odczytać dane wyjściowe.

Abdullah Ibn Mannan
źródło
0
using System.Diagnostics;


Trace.WriteLine("This line will show on Output window"); 
Trace.Flush();

Działa to w programie Microsoft Team Explorer dla programu Visual Studio 2013

Zobacz microsoft.com

Sinan ÇALIŞKAN
źródło
0

Obejście, które znalazłem:

Naciśnij Ctrl + Alt + Ilub przejdź do „Karta Debuguj” ---> „Windows” ---> „Natychmiastowa”.

W swoim kodzie napisz:

Trace.WriteLine("This is one of the workaround");
GurdeepBhatia
źródło
0

Okno wyjściowe programu Visual Studio 2017 ma menu o nazwie Pokaż dane wyjściowe z , w moim przypadku ASP.NET Core Web Server był opcją do wybrania, aby zobaczyć wydrukowane, natknąłem się na ten problem, ponieważ ustawiłem go na kompilację, więc Nie widziałem wydrukowanych wierszy w czasie wykonywania.

kuky54
źródło
0

Istnieją 2 możliwe problemy:

  • Po pierwsze, nie użyłeś, using Systemco powinno być przed napisaniem kodu używającego "klasy systemowej", jakConsole.WriteLine()
  • Po drugie, nie zakodowałeś, co dzieje się po wyświetleniu na konsoli komunikatu „Test”

Możliwym rozwiązaniem będzie:

using System;

namespace Test
{
    public static Main()
    {
        //Print to the console
        Console.WriteLine("Test");

        //Allow user to read output
        Console.ReadKey();
    }
}

Strategiczne jest również kodowanie Console.Write("Press any key to exit...");w linii poprzedzającej, Console.ReadKey();aby użytkownik wiedział, że program się kończy, musi nacisnąć dowolny klawisz, aby wyjść.

Lethu Nsibande
źródło