เหตุใด Console.Writeline, Console.Write ไม่ทำงานใน Visual Studio Express


169

ฉันเพิ่งเปิดแอปพลิเคชันคอนโซลและฉันพิมพ์

Console.WriteLine("Test");

แต่หน้าต่างผลลัพธ์ไม่แสดงสิ่งนี้ ฉันไปที่หน้าต่างผลลัพธ์ด้วย Ctrl + W, O

แต่ไม่มีอะไรปรากฏขึ้นเมื่อฉันเรียกใช้โปรแกรมของฉันฉันจะถั่วหรือนี้ไม่ได้รับการสนับสนุนใน Visual Studio 2010 ด่วน?


3
อย่างที่Leifบอกว่ามันหายไปก่อนที่คุณจะเห็นมัน ใช้Console.ReadKey()
Xaqron

ดูเพิ่มเติมที่stackoverflow.com/a/1583569/503688สำหรับกลไกในการเปลี่ยนเส้นทางคอนโซลเอาต์พุตไปยังหน้าต่างเอาต์พุต debug
yoyo

คำตอบ:


301

Console.WriteLineเขียนเอาต์พุตของคุณไปยังหน้าต่างคอนโซลที่เปิดโดยแอปพลิเคชันของคุณ (คิดว่าหน้าต่างสีดำพร้อมข้อความสีขาวที่ปรากฏขึ้นเมื่อคุณเปิดพรอมต์คำสั่ง) ลองSystem.Diagnostics.Debug.WriteLineแทน


26
ผลลัพธ์การตรวจแก้จุดบกพร่องปรากฏขึ้นในหน้าต่างผลลัพธ์ (Debug => Windows => ผลลัพธ์) ฉันไม่ได้เปิดตามค่าเริ่มต้น
Appulus

1
หากไม่มีเอาต์พุตในหน้าต่างคอนโซลให้ตรวจสอบคุณสมบัติของแอปพลิเคชันภายใต้แท็บตัวเลือกการเริ่มต้น Debug เพื่อให้แน่ใจว่าคุณไม่มีอาร์กิวเมนต์บรรทัดคำสั่งใด ๆ ที่เปลี่ยนเส้นทางเอาต์พุตจากคอนโซล
Chad Miller

และการใช้เครื่องมือเช่นtechnet.microsoft.com/en-us/sysinternals/debugview.aspx DebugView (dbgview) ที่จะได้รับข้อความแก้ปัญหาเพราะพวกเขาจะไม่ปรากฏบนคอนโซล cmd
Roger Deep

19

ไปที่คุณสมบัติในตัวคุณเองในโครงการSolution Explorerหน้าต่างและเลือกประเภทการประยุกต์ใช้และมองหาและเปลี่ยนค่าของมันไปOutput Type Console Applicationสิ่งนี้จะทำหน้าจอคอนโซลนอกเหนือจากแบบฟอร์มของคุณ หากคุณปิดหน้าจอคอนโซลแบบฟอร์มของคุณจะถูกปิดเช่นกัน

โชคดี.


ทำให้วันของฉัน! ฉันสามารถวนลูปผ่านการสืบค้น LINQ ของฉันและเขียนไปยังคอนโซลตอนนี้ซึ่งเป็นวิธีที่รวดเร็วในการรับข้อมูลที่ถูกต้องในการต่อสู้
JustJohn

15

บางทีคอนโซลกำลังล้าง ลอง:

Console.WriteLine("Test");
Console.ReadLine();

และหวังว่าจะอยู่ที่นั่นจนกว่าคุณจะกด Enter


15

ไม่มีคำตอบที่น่าพอใจ

System.Diagnostics.Debug.WriteLine() จะเขียนข้อความไปที่หน้าต่าง Output: debug แต่อึมากถูกทิ้งอย่างต่อเนื่องในหน้าต่างนั้นโดยทุกกระบวนการภายใต้ดวงอาทิตย์มันก็เหมือนกับการหาเข็มในกองหญ้าเพื่อค้นหาข้อความของคุณ

Console.WriteLine()ไม่เขียนไปยังหน้าต่างใด ๆ ใน Visual Studio ฉันเดาว่ามันจะเขียนถึงคอนโซลแอปพลิเคชันเท่านั้นหากแอปพลิเคชันของคุณสร้างคอนโซลในตอนแรกนั่นคือถ้าเป็นแอปพลิเคชันคอนโซล

ทำไมการใช้เครื่องมือทำให้งานง่าย ๆ คือให้โค้ดเว็บแอปพลิเคชันเซิร์ฟเวอร์ของคุณโค้ด. cs เขียนข้อความดีบักลงในหน้าต่างที่เต็มไปด้วยอึทำให้เป็นไปไม่ได้ที่จะหาข้อมูลของคุณ?


6

หรือคุณสามารถแก้ไขข้อบกพร่องได้ด้วยCTRL+F5วิธีนี้จะเปิด ConsoleWindow รอหลังจากบรรทัดสุดท้ายทำงานจนกว่าคุณจะกดปุ่ม


8
นั่นไม่ใช่การดีบั๊กจริงๆนั่นเป็นเพียงการเปิดตัวแอปพลิเคชันโดยไม่ต้องแนบดีบั๊ก : /
damian

5

เป็นไปได้มากกว่าที่คุณจะใช้ Console ในเนมสเปซ ตัวอย่างเช่นนี้:

namespace XYZApplication.Console
{
    class Program
    {
        static void Main(string[] args)
       {
            //Some code;             
       }
    }
}

ลองลบออกจากเนมสเปซหรือใช้เนมสเปซเต็มแทนเช่น

   System.Console.Writeline("abc");

1
ฉันไม่มี Console อื่นในแอปของฉัน แต่เพิ่มความSystem.ช่วยเหลือ ขอบคุณ
kolenda


4

ในแอป Winforms ทั้งสองวิธี:

System.Diagnostics.Debug.WriteLine("my string")

และ

System.Console.WriteLine("my string")

เขียนไปที่หน้าต่างเอาต์พุต

ในแอป AspNetCore System.Diagnostics.Debug.WriteLine("my string")เขียนไปยังหน้าต่างเอาต์พุตเท่านั้น



2

คลิกขวาที่โครงการใน solution-explorer แล้วคลิก "clean"

ตอนนี้ทำงาน F5

ตรวจสอบให้แน่ใจว่ารหัสดังต่อไปนี้:

Console.WriteLine("TEST");
Console.ReadLine();

1

ฉันพบปัญหาที่คล้ายกันขณะใช้งานการทดสอบหน่วย Console.WriteLine()ไม่ได้เขียนอะไรลงในหน้าต่างผลลัพธ์ VS

การใช้การSystem.Diagnostics.Debug.WriteLine()แก้ไขปัญหา


1

หากคุณใช้ Ctrl-F5 (เริ่มโดยไม่มีการดีบัก) หน้าต่างจะเปิดทิ้งไว้พร้อมกับข้อความ "กดปุ่มใดก็ได้เพื่อดำเนินการต่อ" นั่นเป็นวิธีที่ง่ายที่สุดในการปิดหน้าต่างคอนโซลเพื่อไม่ให้คุณเห็นเอาต์พุตคอนโซล


1

ไปที่เมนูดีบั๊กและเลือกตัวเลือกและยกเลิกการเลือก "เปลี่ยนเส้นทางข้อความหน้าต่างเอาต์พุตทั้งหมดไปยังหน้าต่างทันที"


0

Console.Writeline() แสดงขึ้นในเอาต์พุตดีบัก (Debug => Windows => เอาต์พุต)


7
ไม่ System.Diagnostics.Debug.WriteLine เขียนไปยัง Debug => Windows => เอาต์พุต แต่ไม่ใช่ Console.WriteLine
Vitalii Korsakov

1
บุคคลที่ถามคำถามนี้กำลังใช้แอปพลิเคชั่นคอนโซลโดยที่ Console.WriteLine () ของหลักสูตรเขียนไปยังคอนโซลซึ่งเป็นหน้าต่างแอปพลิเคชันสีดำซึ่งดูเหมือนหน้าต่าง DOS Console.WriteLine () เขียนไปยังหน้าต่างผลลัพธ์การดีบักเท่านั้นเมื่อไม่ใช่แอปพลิเคชันคอนโซล
Peter Huber

"Console.WriteLine () เขียนไปยังหน้าต่างผลลัพธ์การดีบักเท่านั้นเมื่อไม่ใช่แอปพลิเคชันคอนโซล" ทำไม?
sydd

0

หากคุณกำลังพัฒนาแอพพลิเคชั่นบรรทัดคำสั่งคุณสามารถใช้Console.ReadLine()ที่ส่วนท้ายของรหัสเพื่อรอการกดปุ่ม 'Enter' ก่อนที่จะปิดหน้าต่างคอนโซลเพื่อให้คุณสามารถอ่านเอาต์พุตของคุณได้



0

วิธีแก้ปัญหาที่ฉันพบ:

กด Ctrl + Alt + Iหรือไปที่ "แท็บดีบั๊ก" ---> "Windows" ---> "ทันที"

ในการเขียนรหัสของคุณ:

Trace.WriteLine("This is one of the workaround");

0

หน้าต่าง Output ของ Visual Studio 2017 มีเมนูที่เรียกว่าShow output จากนั้นในกรณีของฉันASP.NET Core Web Server เป็นตัวเลือกให้เลือกเพื่อที่จะเห็นการพิมพ์ออกมาฉันเจอปัญหานี้ตั้งแต่ฉันตั้งค่าเป็นBuildดังนั้น ฉันไม่เห็นบรรทัดที่พิมพ์ออกมาตอนรันไทม์


0

มี 2 ​​ปัญหาที่เป็นไปได้คือ:

  • ประการแรกคุณไม่ได้ใช้รหัสusing Systemที่ควรเป็นก่อนเขียนโค้ดที่ใช้ "System class" เช่นConsole.WriteLine()
  • ประการที่สองคุณยังไม่ได้เขียนรหัสว่าเกิดอะไรขึ้นหลังจากคอนโซลแสดง "การทดสอบ"

ทางออกที่เป็นไปได้คือ:

using System;

namespace Test
{
    public static Main()
    {
        //Print to the console
        Console.WriteLine("Test");

        //Allow user to read output
        Console.ReadKey();
    }
}

นอกจากนี้ยังเป็นกลยุทธ์ในการเขียนโค้ดConsole.Write("Press any key to exit...");บนบรรทัดที่อยู่ข้างหน้าConsole.ReadKey();เพื่อให้ผู้ใช้ทราบว่าโปรแกรมกำลังสิ้นสุดเขา / เธอจะต้องกดปุ่มใด ๆ เพื่อออก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.