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.WriteLineして、IDEの出力ウィンドウに出力を送信できるはずです。

編集:問題に関して、あなたmainForm_Loadはあなたが実際に呼ばれていることを確認しましたか?mainForm_Load表示の先頭にブレークポイントを設定できます。呼び出されていない場合はmainForm_LoadLoadイベントに接続されていない可能性があります。

また、派生クラス内からOn{EventName}サブスクライブするので{EventName}はなく、オーバーライドする方が効率的であり、一般的には優れています(この場合、のOnLoad代わりにオーバーライドしますLoad)。


5
このような?System.Diagnostics.Debug.WriteLine( "some tetttttttttt23423423423423423ttttttttttttttttttttttt");
sark9012 2010

2
@ Luke-はい、Import System.Diagnosticsでももっと簡単にすることができます。そして、私Traceはこれにクラスを使用することを好みます。
Joel Coehoorn 2010

2
Visual Studioの上部のナビゲーションバーで、[表示]> [出力]に移動して、からの値を確認しますSystem.Diagnostics.Debug.WriteLine
Chad Kuehn 2017

13

Console.WriteLine("example text")出力を[デバッグ出力]ウィンドウに表示する場合は、アプリケーションの出力タイプをコンソールアプリケーションからWindowsアプリケーションに一時的に変更します。

メニューから[プロジェクト] + [プロパティ]を選択し、[出力の種類]に移動します。ドロップダウン、[Windowsアプリケーション]に変更して、アプリケーションを実行します。

もちろん、IDEの外部で実行することを目的としたコンソールアプリケーションを構築するには、これを元に戻す必要があります。

(Visual Studio 2008および2010でテスト済みで、後のバージョンでも機能するはずです)


これは、アプリケーションの結果をすばやくコピーする場合に適した方法です。
マーククラム

2
Console.Writelineがコンソールアプリケーションで機能しないのはなぜですか?これは非常に直感に反しているように聞こえます。
sydd 2018

^^ええ、何ですか?これは常に機能しています。そして今ではそうではありません。これは、VisualStudioのバグのように感じます。
Triynko

3

を使用するConsole.WriteLine( "Test" );と、Windowsフォーム/ WPFプロジェクトのVisualStudioの出力ウィンドウ([表示]メニュー-> [出力])にログメッセージを書き込むことができます。

しかし、動作せず、動作しているだけの場合System.Diagnostics.Debug.WriteLine( "Test" );がありました。Visual Studioを再起動Console.WriteLine()して、作業を再開しました。VisualStudioのバグのようです。


1

コマンドラインアプリケーションを開発している場合Console.ReadLine()は、コードの最後で「Enter」キーが押されるのを待ってからコンソールウィンドウを閉じて、出力を読み取ることもできます。ただし、上記のトレースとデバッグの両方の回答がより適切なオプションです。


1

チェックボックスの「管理された互換モードを使用する」のチェックを外してみてください

ツール=>オプション=>デバッグ=>一般

それは私のために働いた。


以前のcpp / cliプロジェクトをデバッグするときにこれをオンにしましたが、明らかにこの問題が発生し、NLogがコンソールにログを記録しませんでした。
Blackey

0

Mac VS 2017で問題が発生したとき(私が直面した問題)。

  1. [プロジェクト] >> [プロジェクト名]オプションに移動します。
  2. オプションウィンドウがポップアップします
  3. [実行] >> [デフォルトのメニューオプション]に移動します
  4. [外部コンソールで実行]オプションをTRUEにチェックして、[OK]と言います

今すぐアプリケーションコードを実行してください。


-1

古いスレッドですが、VS 2015では、[プロジェクトのプロパティ]-> [デバッグ]タブで[VisualStudioホスティングプロセスを有効にする]がオンになっていないか無効になっている場合、Console.WriteLineは出力ウィンドウに書き込みません。


-3

ビュー>>出力を選択して出力ウィンドウを開きます。

出力ウィンドウで、結果を確認できます


1
これは質問に答えません。ユーザーは具体的に、出力ウィンドウにいると言います(したがって、これが選択されています)。
リチャードデュール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.