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

    }
}

有人可以帮忙吗?


解决了问题,以错误的方式编写了代码。
无法

Answers:


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 ttttttttttttt23423423423423423ttttttttttttttttttttttt”);
sark9012 2010年

2
@Luke-是的,但是您可以Import System.Diagnostics使其更简单。我更喜欢使用Trace该类。
Joel Coehoorn

2
在Visual Studio的顶部导航栏中,转到“视图”>“输出”以查看中的值System.Diagnostics.Debug.WriteLine
乍得·库恩

13

如果要Console.WriteLine("example text")在“调试输出”窗口中显示输出,请暂时将应用程序的输出类型从控制台应用程序更改为Windows应用程序。

从菜单中选择Project + Properties,然后导航到Output type:下拉菜单,更改为Windows Application然后运行您的应用程序

当然,您应该将其改回以构建旨在在IDE外部运行的控制台应用程序。

(在Visual Studio 2008和2010中进行了测试,希望它也可以在以后的版本中使用)


如果您希望快速复制应用程序的结果,这是一种更好的方法。
马克·克拉姆

2
为什么Console.Writeline在Console应用程序中不起作用?这听起来很不直观。
sydd '18

^^是的,什么?这一直有效。现在不是。感觉就像是Visual Studio中的错误。
Triynko

3

usingConsole.WriteLine( "Test" );能够将日志消息写入Windows窗体/ 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. 转到运行>>默认菜单选项
  4. 勾选“在外部控制台上运行”选项为TRUE,然后说确定

立即运行您的应用程序代码。


-1

旧线程,但在VS 2015 Console.WriteLine中不会写入输出窗口,如果未选中“启用Visual Studio宿主进程”或在“项目属性”->“调试”选项卡中将其禁用


-3

选择视图>>输出以打开输出窗口。

在输出窗口中,您可以看到结果


1
这不能回答问题。用户专门说他们在OUTPUT窗口中(因此选择了此窗口)。
理查德·杜尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.