Console.WriteLine nie pojawia się w oknie Output


85

Wprowadziłem kilka Console.WriteLinewywołań do przetestowania, ale nie pojawiają się one w oknie wyjściowym?

public static ArrayList myDeliveries = new ArrayList();

public mainForm(){
    InitializeComponent();
}

private void mainForm_Load(object sender, EventArgs e){

    if (!File.Exists("../../MealDeliveries.txt")){
        MessageBox.Show("File not found!");
        return;
    }

    using (StreamReader sr = new StreamReader("../../MealDeliveries.txt")){
        //first line is delivery name 
        string strDeliveryName = sr.ReadLine();
        Console.WriteLine("Test content");

        while (strDeliveryName != null){

            //other lines 
            Delivery d = new Delivery(
                strDeliveryName, 
                sr.ReadLine(),
                sr.ReadLine(), 
                sr.ReadLine(),
                sr.ReadLine(), 
                sr.ReadLine(),
                sr.ReadLine()
            );

            mainForm.myDeliveries.Add(d);

            //check for further values
            strDeliveryName = sr.ReadLine();
        }
    }

    displayDeliveries();


}


private void displayDeliveries(){

    lstDeliveryDetails.Items.Clear();
    Console.WriteLine("Test content");
    Console.WriteLine(mainForm.myDeliveries.Count);
    foreach (Delivery d in mainForm.myDeliveries){
        lstDeliveryDetails.Items.Add(d.DeliveryName);

    }
}

Czy ktoś może pomóc?


Rozwiązałem problem, napisałem kod w niewłaściwy sposób. Nie
udało się

Odpowiedzi:


56

Jeśli zamierzasz wykorzystać te dane wyjściowe w środowisku produkcyjnym, użyj elementów członkowskich klasy Trace . To sprawia, że ​​kod jest przenośny, możesz łączyć różne typy odbiorników i dane wyjściowe do okna konsoli, okna debugowania, pliku dziennika lub cokolwiek innego, co chcesz.

Jeśli jest to tylko tymczasowy kod debugujący, którego używasz do sprawdzenia, czy określony kod jest wykonywany lub ma prawidłowe wartości, użyj klasy Debug, jak sugeruje Zach .

Jeśli absolutnie musisz używać konsoli, możesz dołączyć konsolę w Mainmetodzie programu .


109

Consoledane wyjściowe do okna konsoli i aplikacji Winforms nie pokazują okna konsoli. Powinieneś być w stanie System.Diagnostics.Debug.WriteLinewysłać dane wyjściowe do okna wyjściowego w swoim IDE.

Edycja: Jeśli chodzi o problem, czy zweryfikowałeś, że mainForm_Loadfaktycznie dzwonisz? Możesz umieścić punkt przerwania na początku, mainForm_Loadaby zobaczyć. Jeśli nie jest wywoływany, podejrzewam, że mainForm_Loadnie jest powiązany z Loadwydarzeniem.

Ponadto, jest bardziej wydajny i ogólnie lepiej zastąpić On{EventName}zamiast subskrypcji {EventName}z poziomu klas pochodnych (w przypadku nadrzędne OnLoadzamiast Load).


5
Lubię to? System.Diagnostics.Debug.WriteLine ("some tetttttttttt23423423423423423ttttttttttttttttttttt");
sark9012

2
@Luke - tak, ale możesz Import System.Diagnosticsto znacznie uprościć. I wolę Tracedo tego używać klasy.
Joel Coehoorn

2
Na górnym pasku nawigacyjnym programu Visual Studio przejdź do pozycji Widok> Dane wyjściowe, aby wyświetlić wartości z System.Diagnostics.Debug.WriteLine.
Chad Kuehn

13

Jeśli chcesz, aby Console.WriteLine("example text")dane wyjściowe były wyświetlane w oknie Dane wyjściowe debugowania, tymczasowo zmień typ danych wyjściowych aplikacji z aplikacji konsoli na aplikację systemu Windows.

Z menu wybierz Projekt + Właściwości i przejdź do Typ wyjścia: lista rozwijana, przejdź do aplikacji Windows, a następnie uruchom aplikację

Oczywiście powinieneś zmienić to z powrotem, aby zbudować aplikację konsolową przeznaczoną do uruchamiania poza IDE.

(testowane z Visual Studio 2008 i 2010, spodziewaj się, że powinno działać również w późniejszych wersjach)


Jest to lepszy sposób, jeśli chcesz szybko skopiować wyniki swojej aplikacji.
Mark Kram,

2
Dlaczego Console.Writeline nie działa w aplikacji Console? Brzmi to bardzo sprzecznie z intuicją.
sydd

^^ Tak, co? To zawsze działało. A teraz nie jest. To wygląda na błąd w programie Visual Studio.
Triynko

3

Za pomocą Console.WriteLine( "Test" );można zapisywać komunikaty dziennika w oknie danych wyjściowych (menu Widok -> dane wyjściowe) w programie Visual Studio dla projektu Windows Forms / WPF.

Jednak spotkałem się z przypadkiem, w którym to nie działało, a tylko System.Diagnostics.Debug.WriteLine( "Test" );działało. Zrestartowałem Visual Studio i Console.WriteLine()zacząłem znowu pracować. Wygląda na to, że jest to błąd programu Visual Studio.


1

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. Jednak zarówno odpowiedzi dotyczące śledzenia i debugowania zamieszczone powyżej są lepszymi opcjami.


1

Spróbuj odznaczyć pole wyboru „Użyj zarządzanego trybu zgodności” w

Narzędzia => Opcje => Debugowanie => Ogólne

U mnie to zadziałało.


Miałem to włączone podczas debugowania poprzedniego projektu cpp / cli i najwyraźniej powoduje ten problem, a także brak logowania NLog do konsoli.
Blackey

0

Kiedy problem występuje na Mac VS 2017 (z którym się spotkałem).

  1. Przejdź do opcji Projekt >> „Nazwa Twojego projektu”.
  2. Pojawi się okno opcji
  3. Idź do RUN >> Domyślna opcja menu
  4. Zaznacz opcję „Uruchom na konsoli zewnętrznej” PRAWDA i powiedz OK

Uruchom teraz kod aplikacji.


-1

Stary wątek, ale w VS 2015 Console.WriteLine nie zapisuje do okna wyjściowego, jeśli opcja „Włącz proces hostingu programu Visual Studio” nie jest zaznaczona lub jest wyłączona we właściwościach projektu -> karta Debugowanie


-3

Wybierz widok >> Wyjście, aby otworzyć okno wyjściowe.

W oknie wyników możesz zobaczyć wynik


1
To nie odpowiada na pytanie. Użytkownik wyraźnie mówi, że znajduje się w oknie OUTPUT (i dlatego ma to zaznaczone).
Richard Duerr,
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.