在 VisualStudio2010中查看控制台的输出?

我正在编写一个简单的 C # 程序,其中有一些输出(Console.WriteLine("...");)。问题是,每次运行它时,我都无法在输出窗口中看到程序的输出。

已经检查了“ program output”标记,并且我已经将所有输出重定向到中间窗口,但是没有用。

如何启用查看程序输出的功能?

我不认为问题出在我的代码上。我尝试运行一个简单的程序,它只输出一个字符串和 readline“ ala hello world”,但我仍然无法看到任何输出。问题要么是我在错误的位置查找输出,要么是 VisualStudio 执行错误的操作。

debug.write方法也不起作用。

使用 debug.Write,这一切都可以工作,尽管以前不是这样。要么是在我重新开始之前有什么事让我不舒服,要么就是我需要休息一下,不管怎样,现在都没事了。谢谢所有有用的评论 =)

298925 次浏览

可以使用 System.Diagnostics.Debug.WriteSystem.Runtime.InteropServices方法将消息写入“输出”窗口。

在程序末尾添加 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
}
}

或者,您也可以简单地在最后一行上添加一个断点。

Ctrl + F5来运行程序而不是 F5

下面是一些需要检查的事情:

  1. 对于 console.Write/WriteLine,你的应用程序必须是一个控制台应用。(右键单击解决方案资源管理器中的项目,选择 物业,然后查看应用程序选项卡中的“ 输出类型”组合——应该是“ 控制台应用”(注意,如果你真的需要一个 Windows 应用程序或类库,不要仅仅为了得到 Console.WriteLine而将其更改为 Console App)。

  2. 你可以使用 System.Diagnostics.Debug.WriteLine写入输出窗口(在 VS 中显示输出窗口,到达 观景 | 输出)注意,这些写入只会发生在定义了 DEBUG 条件的构建中(默认情况下,调试构建定义了这个条件,而发布构建没有)

  3. 如果您希望能够在非调试构建中编写可配置的“侦听器”,那么可以使用 System.Diagnostics.Trace.Writeline。(默认情况下,这将写入 VisualStudio 中的“输出”窗口,就像 Debug.Writeline一样)

System.Diagnostics.Debug.WriteLine()将工作,但是您必须在正确的地方寻找输出。在 VisualStudio2010中,在菜单栏上单击 调试-> 窗户-> 输出。现在,在停靠在错误列表旁边的屏幕底部,应该有一个输出选项卡。单击它并在下拉列表中再次检查它是否显示调试流的输出。

附注: 我想输出窗口显示的是一个新安装,但我不记得了。如果没有,或者你不小心关上了,按照下面的说明做。

您可以创建两个小方法,一个可以在程序开始时调用,另一个可以在程序结束时调用。你也可以使用控制台。Read () ,这样程序就不会在最后一行之后关闭。

这样您就可以确定您的功能何时执行,以及程序何时存在。

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




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

若要保持打开 Windows 控制台并且不使用其他输出方法而不是标准输出流,请转到 Name-of-your-project-> Properties-> Linker-> System。

到达之后,选择 SubSystem 选项卡并标记 CONSOLE (/SUBSystem: CONSOLE)。完成这一步之后,无论何时想要编译,都可以使用 Ctrl + F5(不需要调试即可启动) ,控制台将保持打开状态。:)

由于某种原因,我经常遇到这种情况,我不明白为什么这个解决方案没有被提及:

单击 观景输出(或者保持 Ctrl并按 W > O)

然后控制台输出出现在 错误列表当地人看好了窗口所在的位置。

注意: 我正在使用 VisualStudio2015。

在 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

VisualStudio 本身覆盖控制台窗口,尝试最小化它们相互之间绘制的 VisualStudio 窗口。