Console.WriteLine이 출력 창에 표시되지 않습니다.


85

Console.WriteLine테스트를 위해 몇 가지 호출을 입력 했지만 출력 상자에 나타나지 않습니까?

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

    }
}

누구든지 도울 수 있습니까 ??


문제를 해결하고 잘못된 방식으로 코드를 작성했습니다. 올바르게 컴파일되지
— 않았습니다

답변:


56

프로덕션에서이 출력을 사용하려면 Trace 클래스 멤버 를 사용하십시오 . 이렇게하면 코드를 이식 할 수 있고 다양한 유형의 리스너를 연결하고 콘솔 창, 디버그 창, 로그 파일 또는 원하는 다른 항목에 출력 할 수 있습니다.

이것이 특정 코드가 실행되고 있는지 또는 올바른 값이 있는지 확인하는 데 사용하는 임시 디버깅 코드 인 경우 Zach가 제안한 대로 Debug 클래스 를 사용합니다 .

반드시 콘솔을 사용해야하는 경우 프로그램의 메서드에 콘솔 을 연결할 수 있습니다Main .


109

Console콘솔 창 및 Winforms 응용 프로그램에 대한 출력은 콘솔 창을 표시하지 않습니다. System.Diagnostics.Debug.WriteLineIDE의 출력 창에 출력을 보내는 데 사용할 수 있어야합니다 .

편집 : 문제와 관련하여 mainForm_Load실제로 전화를 받고 있는지 확인 했습니까? 보기 시작 부분에 중단 점을 배치 할 수 mainForm_Load있습니다. 호출 mainForm_Load되지 않으면 Load이벤트에 연결되지 않은 것 같습니다 .

또한 파생 클래스 내에서 On{EventName}구독하는 대신 재정의하는 것이 더 효율적이고 일반적으로 더 좋습니다 {EventName}(귀하의 경우 OnLoad대신 재정 의 Load).


5
이렇게? System.Diagnostics.Debug.WriteLine ( "일부 tetttttttttt23423423423423423ttttttttttttttttttttttt");
— sark9012

2
@Luke-예,하지만 Import System.Diagnostics훨씬 더 간단하게 만들 수 있습니다 . 그리고 나는 Trace이것을 위해 클래스를 사용하는 것을 선호 합니다.
— Joel Coehoorn

2
Visual Studio의 상단 탐색 모음에서보기> 출력으로 이동하여 System.Diagnostics.Debug.WriteLine.
— Chad Kuehn

13

당신이 원하는 경우 Console.WriteLine("example text")일시적으로 디버그 출력 창에 표시 Windows 응용 프로그램에 콘솔 응용 프로그램에서 응용 프로그램의 출력 유형을 변경 출력.

메뉴에서 프로젝트 + 속성을 선택하고 출력 유형 : 드롭 다운으로 이동하고 Windows 응용 프로그램으로 변경 한 다음 응용 프로그램을 실행합니다.

물론 IDE 외부에서 실행되는 콘솔 애플리케이션을 빌드하려면 다시 변경해야합니다.

(Visual Studio 2008 및 2010으로 테스트되었으며 이후 버전에서도 작동 할 것으로 예상)


애플리케이션 결과를 빠르게 복사하려는 경우 더 나은 방법입니다.
— Mark Kram

2
Console.Writeline이 콘솔 애플리케이션에서 작동하지 않는 이유는 무엇입니까? 이것은 매우 직관적으로 들리지 않습니다.
— sydd

^^ 그래, 뭐? 이것은 항상 효과가 있습니다. 그리고 지금은 그렇지 않습니다. 이것은 Visual Studio의 버그처럼 느껴집니다.
— Triynko

3

를 사용하면 Console.WriteLine( "Test" );Windows Forms / WPF 프로젝트에 대한 Visual Studio의 출력 창 (보기 메뉴-> 출력)에 로그 메시지를 쓸 수 있습니다.

그러나 작동하지 않고 작동하는 경우가 발생 System.Diagnostics.Debug.WriteLine( "Test" );했습니다. Visual Studio를 Console.WriteLine()다시 시작하고 다시 작업하기 시작했습니다. Visual Studio 버그 인 것 같습니다.


1

명령 줄 응용 프로그램을 개발하는 경우 Console.ReadLine()코드 끝에서을 사용하여 콘솔 창을 닫기 전에 'Enter'키 누름을 기다려 출력을 읽을 수도 있습니다. 그러나 위에 게시 된 추적 및 디버그 답변 모두 더 나은 옵션입니다.


1

"관리되는 호환성 모드 사용"확인란의 선택을 취소하십시오.

도구 => 옵션 => 디버깅 => 일반

그것은 나를 위해 일했습니다.


이전 cpp / cli 프로젝트를 디버깅 할 때이 기능을 사용했으며 분명히이 문제가 발생하고 콘솔에 로깅되지 않는 NLog가 발생합니다.
— Blackey

0

Mac VS 2017에서 문제가 발생할 때 (내가 직면 한 문제).

  1. 프로젝트 >> "프로젝트 이름"옵션으로 이동합니다.
  2. 옵션 창이 나타납니다.
  3. RUN >> 기본 메뉴 옵션으로 이동
  4. "외부 콘솔에서 실행"옵션을 TRUE로 선택하고 확인을 말합니다.

지금 애플리케이션 코드를 실행하십시오.


-1

이전 스레드, 그러나 VS 2015 Console.WriteLine은 "Visual Studio 호스팅 프로세스 활성화"가 선택되지 않았거나 프로젝트 속성-> 디버그 탭에서 비활성화 된 경우 출력 창에 쓰지 않습니다.


-3

보기 >> 출력 을 선택 하여 출력 창을 엽니 다.

출력 창에서 결과를 볼 수 있습니다.


1
이것은 질문에 대한 답이 아닙니다. 사용자는 특히 OUTPUT 창에 있다고 말합니다 (따라서 이것을 선택했습니다).
— Richard Duerr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.