Visual Studio 2010でコンソールの出力を確認しますか?


163

いくつかの出力(Console.WriteLine("...");)を含む簡単なC#プログラムを書いています。問題は、実行するたびに、出力ウィンドウにプログラムの出力が表示されないことです。

「プログラム出力」タグはすでにチェックされており、すべての出力を中間ウィンドウにリダイレクトしましたが、使用できませんでした。

プログラムの出力を表示するにはどうすればよいですか?

問題は私のコードにあるとは思わない。文字列とreadline "ala hello world"を出力するだけの簡単なプログラムを実行してみましたが、それでも出力が表示されません。問題は、間違った場所で出力を探しているか、Visual Studioが機能していないかのどちらかです。

このdebug.write方法も機能しません。

を使用するとdebug.Write、以前は機能しませんでしたが、すべて機能します。再起動する前に何かバグがあったか、休憩するだけでいいのか、いずれにしても今はすべて順調です。役立つコメントをありがとうございます=)


7
Visual Studioがコンソールウィンドウを覆っています。他のモニターに移動します。
ハンスパッサント

回答:


195

System.Diagnostics.Debug.WriteまたはSystem.Runtime.InteropServicesメソッドを使用して、メッセージを出力ウィンドウに書き込むことができます。


10
System.Diagnostics.Debug.Write(OPに名前空間がない場合)
jonsca

4
ああ、そうだ、私はコントロール+ピリオドを打つことに慣れているだけだ:)
Richard Adnams

jonsca:私は名前空間を使用していますが、なぜconsole.writelineだけを使用できますか?テストの理由だけでなく、プログラムにコンソールに書き込みたいですか?
r3x

2
アプリケーションがコンソールアプリケーションの場合は、console.writelineを使用してコンソールウィンドウに出力できます。アプリケーションがWindowsフォームアプリの場合は、debug.writeを使用できます。abitの詳細は、このリンクをチェックしてくださいsocial.msdn.microsoft.com/Forums/en/csharpgeneral/thread/...
リチャードAdnams

1
興味深いことは知らなかった、そしてはい、私のアプリはWindowsフォームアプリですが、debug.Writeメソッドと同じ問題を使用しようとしませんでした。コンパイルしてすべてが桃色ですが、出力をどこにも表示できません
r3x

50

確認することがいくつかあります。

  1. の場合console.Write/WriteLine、アプリはコンソールアプリケーションである必要があります。(ソリューションエクスプローラでプロジェクトを右クリックし、選択したプロパティを、そして「見出力タイプのアプリケーションタブで」コンボは- 「である必要がありますコンソールアプリケーションあなたは本当にWindowsアプリケーションやクラスライブラリが必要な場合は、ノート(」、ドンを取得するためだけにこれをコンソールアプリに変更しないでくださいConsole.WriteLine)。

  2. あなたは使用することができSystem.Diagnostics.Debug.WriteLine、出力ウィンドウに書き込むために(に着いVS、出力ウィンドウ表示するようにビューを | 出力これらの書き込みは、デフォルトでDEBUGの条件が定義されているビルド(に起こるであろう、デバッグはこれを定義構築することに注意)、およびリリースビルドはしません)

  3. System.Diagnostics.Trace.Writeline非デバッグビルドで構成可能な「リスナー」に書き込めるようにする場合に使用できます。(デフォルトでは、これはVisual Studioの出力ウィンドウにと同様に書き込みますDebug.Writeline


2
出力は表示されませんでしたが、プログラムをCtrl + Shift + F5ではなくデバッグモード(F5)で実行する必要があることに気付きました。ありがとう!
Travis Heeter 2013年

System.Diagnostics.Trace.Writelineが機能しないようですが、これを構成する必要があるものは他にありますか?
Travis Heeter 2013年

1
«1»—虚偽の陳述。Monoは、すべてのアプリケーションの出力を細かく示します。«2»— ofc。問題は、メソッドがターミナルにも出力しないことです。そのため、IDEなしではPC上のアプリをデバッグできません。
Hi-Angel

34

Console.Read();プログラムの最後にを追加します。アプリケーションが閉じないようにし、その出力をそのように見ることができます。

これは、処理した後で終了する前に停止したコンソールアプリケーションです。

class Program
{
    static void Main(string[] args)
    {
        DummyObjectList dol = new DummyObjectList(2);
        dol.Add(new DummyObject("test1", (Decimal)25.36));
        dol.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolxs = new XmlSerializer(typeof(DummyObjectList));
        dolxs.Serialize(Console.Out, dol);

        Console.WriteLine(string.Empty);
        Console.WriteLine(string.Empty);

        List<DummyObject> dolist = new List<DummyObject>(2);
        dolist.Add(new DummyObject("test1", (Decimal)25.36));
        dolist.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolistxs = new XmlSerializer(typeof(List<DummyObject>));
        dolistxs.Serialize(Console.Out, dolist);
        Console.Read(); //  <--- Right here
    }
}

または、最終行にブレークポイントを追加することもできます。


2
Console.ReadLineも同様に機能します。Readが標準キーを受け取る場所で続行するにはEnterキーを押す必要があります。
Richard Adnams

そのWindowsフォームアプリ、debug.writeまたはconsole.writelineメソッドが機能するようです
r3x

Euhm、Windowsフォームアプリからコンソールに出力するのはなぜですか?代わりに、フォームまたはダイヤルボックスに出力することをお勧めします。またはコンソールアプリを作成...
Vincent Vancalbergh

すでに私に指摘されたそうです、それは私の側の単なる愚かな間違いです、それでもヘッドアップに感謝します=)
r3x

Console.Read()により、コンソールウィンドウがフォーカスされ、VSの前に表示されます。Console.Write()の後にブレークポイントを置くだけの場合、コンソールウィンドウには出力が表示されますが、フォーカスがないため、表示されない場合があります。
Nigel

21

プレスCtrl+は、F5代わりのプログラムを実行しますF5


1
Ctrl + F5は、デバッグせずにアプリケーションを起動します。出力ウィンドウには何も表示されません。
Richard Adnams

6
これでうまくいきました。プログラムが何を出力しているかを確認したいだけで、コンソール出力は表示されませんでした。これにより、実行後もコンソールウィンドウが開いたままになり、出力を確認できました。
davenpcj 2013

+1、これは実際にデバッグしたくない場合の1つです(コンソールを表示し、出力を読み取ることができます)。
mlvljr 2014

8

System.Diagnostics.Debug.WriteLine()動作しますが、出力の適切な場所を探す必要があります。Visual Studio 2010のメニューバーで、[ デバッグ ] -> [ ウィンドウ] -> [ 出力 ]をクリックします。これで、エラーリストの横にドッキングされた画面の下部に、出力タブが表示されます。それをクリックして、ドロップダウンリストのデバッグストリームからの出力を表示していることを再確認します。

PS:フレッシュインストールで出力ウィンドウが表示されると思いますが、思い出せません。開かない場合、または誤って閉じてしまった場合は、次の手順に従ってください。


0

Windowsコンソールを開いたままにし、標準出力ストリームcoutではなく他の出力メソッドを使用しないようにするには、プロジェクトの名前->プロパティ->リンカー->システムに移動します。

そこに移動したら、SubSytemタブを選択し、コンソール(/ SUBSYSTEM:CONSOLE)をマークします。これを実行したら、コンパイルしたいときはいつでもCtrl + F5(デバッグなしで開始)を使用すると、コンソールが開いたままになります。:)


質問のようにC#ではなく、C ++に適用できると思います。
ドミトリーフェドルコフ2014年

0

私は何らかの理由でこれに頻繁に遭遇し、なぜこのソリューションが言及されていないのか理解できません:

[ 表示] → [ 出力]をクリックします(またはCtrl、W> Oを押したままにします)。

エラーリストローカルウォッチウィンドウの場所にコンソール出力が表示されます。

注:Visual Studio 2015を使用しています。


あなたが言及する出力ウィンドウは、読み込まれているアセンブリ、スレッドの開始と停止などに関連する多くの行があるため、デバッガによって生成されたように見えます。これはコンソール出力とは異なります。
PeterVermont 2016年

0

Visual Studio自体がコンソールウィンドウを覆っているので、Visual Studioのウィンドウが最小化されて互いに重なり合うようにしてください。


-1

Program.cs内:

static int Main(string[] agrs)
{

コードの残りの部分を追加します。

#if DEBUG
    int rtn = Main2(args);
    Console.WriteLine("return " + rtn);
    Console.WriteLine("ENTER to continue.");
    Console.Read();
    return rtn;
}

static int Main2(string[] args)
{
#endif

コードで問題を解決する方法と説明を追加してください。
Koopakiller 2016年

-4

2つの小さなメソッドを作成できます。1つはプログラムの最初に呼び出すことができ、もう1つは最後に呼び出すことができます。Console.Read()を使用して、プログラムが最後の書き込み行の後に閉じないようにすることもできます。

このようにして、機能がいつ実行され、いつプログラムが存在するかを判別できます。

startProgram()
{
     Console.WriteLine("-------Program starts--------");
     Console.Read();
}


endProgram()
{
    Console.WriteLine("-------Program Ends--------");
    Console.Read();
}

Console.Read()の可能性はすでに前に述べられているため、この回答がどのように新しい情報を質問にもたらすかはわかりません。
ForceMagic
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.