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?


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.


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.


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.


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?


6

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


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");

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


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.



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

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.


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.


1

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


0

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


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.



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");

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.


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ść.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.