Melihat output konsol di Visual Studio 2010?

163

Saya menulis program C # sederhana dengan beberapa output ( Console.WriteLine("...");). Masalahnya adalah, setiap kali saya menjalankannya, saya tidak bisa melihat output program di jendela output.

Tag "program output" sudah diperiksa, dan saya sudah mengalihkan semua output ke jendela perantara tetapi tidak berhasil.

Bagaimana saya mengaktifkan melihat hasil program?

Saya tidak berpikir masalahnya ada pada kode saya. Saya mencoba menjalankan program sederhana yang hanya menampilkan string dan membaca "ala hello world" dan saya masih tidak dapat melihat output apa pun. Masalahnya adalah apakah saya mencari output di lokasi yang salah atau Visual Studio bertindak.

The debug.writeMetode juga tidak bekerja.

Menggunakan debug.Write, itu semua berfungsi, meskipun tidak sebelumnya. Entah ada sesuatu yang disadap dengan saya sebelum saya memulai kembali atau saya hanya perlu istirahat, baik itu sekarang baik. Terima kasih semua atas komentar yang bermanfaat =)

r3x
sumber
7
Visual Studio menutupi jendela konsol Anda. Pindahkan ke monitor Anda yang lain.
Hans Passant

Jawaban:

195

Anda dapat menggunakan metode System.Diagnostics.Debug.Writeatau System.Runtime.InteropServicesuntuk menulis pesan ke Jendela Output.

Richard Adnams
sumber
10
System.Diagnostics.Debug.Write (jika OP tidak memiliki namespace dalam permainan)
jonsca
4
Ah benar, saya hanya terbiasa menekan + periode kontrol :)
Richard Adnams
jonsca: saya memiliki namespace dalam permainan dan mengapa saya bisa menggunakan console.writeline, saya ingin program saya menulis ke konsol itu tidak hanya untuk alasan pengujian ??
r3x
2
Jika aplikasi Anda adalah aplikasi konsol, Anda dapat menggunakan console.writeline untuk mencetak ke jendela konsol atau jika aplikasi Anda adalah aplikasi bentuk windows, Anda dapat menggunakan debug.write. Periksa tautan ini untuk info lebih lanjut social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/…
Richard Adnams
1
menarik tidak tahu itu, dan ya aplikasi saya adalah aplikasi bentuk windows, tapi tidak saya mencoba menggunakan metode debug. Menulis masalah yang sama, itu mengkompilasi dan semua sangat bagus tetapi saya tidak dapat melihat output di mana saja
r3x
50

Berikut adalah beberapa hal yang perlu diperiksa:

  1. Sebab console.Write/WriteLine, aplikasi Anda harus berupa aplikasi konsol. (klik kanan proyek di Solution Explorer, pilih Properties , dan lihat kombo " Output Type " di Tab Aplikasi - harus " Aplikasi Konsol " (catatan, jika Anda benar-benar membutuhkan aplikasi windows atau pustaka kelas, jangan dapat mengubahnya ke Aplikasi Konsol hanya untuk mendapatkan Console.WriteLine).

  2. Anda dapat menggunakan System.Diagnostics.Debug.WriteLineuntuk menulis ke jendela output (untuk menampilkan jendela output di VS, sampai ke View | Output ) Perhatikan bahwa penulisan ini hanya akan terjadi di build di mana DEBUG bersyarat didefinisikan (secara default, debug builds mendefinisikan ini, dan rilis build tidak)

  3. Anda dapat menggunakan System.Diagnostics.Trace.Writelinejika Anda ingin dapat menulis ke "pendengar" yang dapat dikonfigurasi di build non-debug. (secara default, ini menulis ke Window Output di Visual Studio, sama seperti Debug.Writeline)

JMarsch
sumber
2
Saya tidak melihat output saya, tetapi kemudian menyadari bahwa saya harus menjalankan program dalam mode debug (F5) alih-alih Ctrl + Shift + F5. Terima kasih!
Travis Heeter
System.Diagnostics.Trace.Writeline tampaknya tidak berfungsi, apakah ada hal lain yang perlu saya konfigurasi untuk ini?
Travis Heeter
1
«1» - pernyataan salah. Mono menunjukkan output baik untuk semua aplikasi. «2» - ofc. Masalahnya adalah bahwa metode ini tidak keluar ke terminal juga. Jadi seseorang tidak dapat men-debug aplikasi pada PC tanpa IDE.
Hi-Angel
34

Tambahkan a Console.Read();di akhir program Anda. Ini akan menjaga aplikasi dari penutupan, dan Anda dapat melihat hasilnya seperti itu.

Ini adalah aplikasi konsol yang baru saja saya gali yang berhenti setelah diproses tetapi sebelum keluar:

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
    }
}

Atau, Anda bisa menambahkan breakpoint pada baris terakhir.

Vincent Vancalbergh
sumber
2
Console.ReadLine bekerja dengan baik Anda hanya perlu menekan enter untuk melanjutkan di mana Baca mengambil kunci standar apa pun.
Richard Adnams
ini adalah aplikasi bentuk windows, dan metode debug.write atau console.writeline tampaknya bekerja
r3x
Euhm, mengapa Anda mengeluarkan ke konsol dari aplikasi Windows Form? Saya sarankan keluaran pada formulir atau kotak dialog. Atau buat aplikasi konsol ...
Vincent Vancalbergh
ya yang sudah ditunjukkan kepada saya, itu hanya kesalahan bodoh di pihak saya, masih terima kasih atas kepala =)
r3x
Console.Read () menyebabkan jendela konsol mendapatkan fokus, dan karenanya muncul di depan VS. Jika Anda cukup meletakkan break point setelah Console.Write () jendela Console akan menampilkan output Anda tetapi tidak memiliki fokus sehingga mungkin tidak terlihat.
Nigel
21

Tekan Ctrl+ F5untuk menjalankan program alih-alih F5.

waqasahmed
sumber
1
Ctrl + F5 memulai aplikasi tanpa men-debug Anda tidak akan melihat apa pun di jendela output.
Richard Adnams
6
Ini bekerja untuk saya; Saya hanya ingin melihat apa yang dihasilkan oleh program, tidak ada output konsol yang muncul. Ini menyebabkannya untuk menjaga jendela konsol tetap terbuka setelah berjalan sehingga saya bisa melihat hasilnya.
davenpcj
+1, ini dia, jika Anda tidak benar-benar ingin melakukan debug (menunjukkan konsol, dan memungkinkan untuk membaca hasilnya).
mlvljr
8

System.Diagnostics.Debug.WriteLine()akan bekerja, tetapi Anda harus mencari di tempat yang tepat untuk hasilnya. Dalam Visual Studio 2010, pada bilah menu, klik Debug -> Windows -> Output . Sekarang, di bagian bawah layar merapat di sebelah daftar kesalahan Anda, harus ada tab keluaran. Klik dan periksa dua kali itu menunjukkan output dari aliran debug pada daftar dropdown.

PS: Saya pikir jendela output muncul pada instalasi baru, tapi saya tidak ingat. Jika tidak, atau jika Anda menutupnya secara tidak sengaja, ikuti instruksi ini.

lordcheeto
sumber
0

Untuk tetap membuka konsol windows Anda dan untuk tidak menggunakan metode output lain daripada cout stream output standar pergi ke Nama-proyek-Anda -> Properties -> Linker -> System.

Sesampai di sana, pilih SubSytem Tab dan tandai Console (/ SUBSYSTEM: CONSOLE). Setelah Anda selesai melakukannya, setiap kali Anda ingin mengkompilasi gunakan Ctrl + F5 (Mulai tanpa debugging) dan konsol Anda akan tetap terbuka. :)

Alex
sumber
Saya pikir itu berlaku untuk C ++, bukan untuk C # seperti dalam pertanyaan.
Dmitry Fedorkov
0

Saya sering mengalami hal ini karena beberapa alasan, dan saya tidak dapat memahami mengapa solusi ini tidak disebutkan:

Klik LihatKeluaran (atau cukup tahan Ctrldan tekan W> O)

Konsol keluaran kemudian muncul di mana Anda Daftar Kesalahan , Warga , dan Tonton jendela.

Catatan: Saya menggunakan Visual Studio 2015.

Metodis
sumber
Jendela Keluaran yang Anda sebutkan kelihatannya dihasilkan oleh debugger karena memiliki banyak baris yang berkaitan dengan rakitan yang sedang dimuat, utas memulai dan menghentikan dan sebagainya. Ini berbeda dari output konsol.
PeterVermont
0

Visual Studio dengan sendirinya menutupi jendela konsol, coba meminimalkan jendela Visual Studio mereka ditarik satu sama lain.

opsfunny
sumber
-1

Dalam Program.cs, antara:

static int Main(string[] agrs)
{

dan sisa kode Anda, tambahkan:

#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
George
sumber
Silakan tambahkan deskripsi, bagaimana kode Anda memecahkan masalah.
Koopakiller
-4

Anda bisa membuat 2 metode kecil, satu yang bisa dipanggil di awal program, yang lain di akhir. Anda juga bisa menggunakan Console.Read (), sehingga program tidak menutup setelah baris tulis terakhir.

Dengan cara ini Anda dapat menentukan kapan fungsionalitas Anda dijalankan dan juga kapan program itu ada.

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


endProgram()
{
    Console.WriteLine("-------Program Ends--------");
    Console.Read();
}
Joseph Kachere
sumber
Saya tidak melihat bagaimana jawaban ini membawa informasi baru ke pertanyaan sejak Console.Read () kemungkinan telah dinyatakan sebelumnya.
ForceMagic