C# 看到控制台';在VisualStudio2010中的输出?

C# 看到控制台';在VisualStudio2010中的输出?,c#,visual-studio-2010,visual-studio,C#,Visual Studio 2010,Visual Studio,我正在编写一个带有一些输出的简单C程序(Console.WriteLine(“…”);)。问题是,每次运行它时,我都无法在输出窗口中看到程序的输出 “program output”标签已经被选中,我已经将所有输出重定向到中间窗口,但没有结果 我如何能够看到程序的输出 我认为问题不在于我的代码。我试着运行一个简单的程序,只输出一个字符串和一行“alahelloworld”,但仍然看不到任何输出。问题要么是我在错误的位置查找输出,要么是VisualStudio执行了操作 debug.write方法也

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

“program output”标签已经被选中,我已经将所有输出重定向到中间窗口,但没有结果

我如何能够看到程序的输出

我认为问题不在于我的代码。我试着运行一个简单的程序,只输出一个字符串和一行“alahelloworld”,但仍然看不到任何输出。问题要么是我在错误的位置查找输出,要么是VisualStudio执行了操作

debug.write
方法也不起作用

使用
debug.Write
,这一切都可以正常工作,尽管以前没有。要么在我重新开始之前我出了什么问题,要么我只是需要休息一下,不管怎样,现在一切都好了。感谢大家提供的有用评论=)

您可以使用或
System.Runtime.InteropServices
方法将消息写入输出窗口。

添加
控制台.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
    }
}
类程序
{
静态void Main(字符串[]参数)
{
DummyObjectList dol=新的DummyObjectList(2);
dol.Add(新的DummyObject(“test1”(十进制)25.36));
dol.Add(新的DummyObject(“test2”,(十进制)0.698));
XmlSerializer dolxs=新的XmlSerializer(typeof(DummyObjectList));
序列化(Console.Out,dol);
Console.WriteLine(string.Empty);
Console.WriteLine(string.Empty);
列表列表=新列表(2);
添加(新的DummyObject(“test1”(十进制)25.36));
添加(新的DummyObject(“test2”,(十进制)0.698));
XmlSerializer dolistxs=新的XmlSerializer(typeof(List));
序列化(Console.Out,dolist);

Console.Read();//按Ctrl+F5来运行程序,而不是按F5。

以下是一些需要检查的内容:

  • 对于
    console.Write/WriteLine
    ,您的应用程序必须是一个控制台应用程序。(右键单击解决方案资源管理器中的项目,选择属性,然后查看应用程序选项卡中的“输出类型”组合框——应该是“控制台应用程序”(注意,如果您确实需要windows应用程序或类库,请不要仅为了获取
    控制台.WriteLine
    )而将其更改为Console应用程序)


  • 您可以使用
    System.Diagnostics.Debug.WriteLine
    写入输出窗口(要在VS中显示输出窗口,请转到视图|输出),请注意,这些写入只会发生在定义了调试条件的生成中(默认情况下,调试生成定义此条件,而发布生成不定义此条件)


  • 如果希望能够在非调试版本中写入可配置的“侦听器”,可以使用
    System.Diagnostics.Trace.Writeline
    。(默认情况下,这会写入Visual Studio中的输出窗口,就像
    debug.Writeline


  • System.Diagnostics.Debug.WriteLine()
    可以工作,但您必须在正确的位置查找输出。在Visual Studio 2010中,在菜单栏上,单击“调试”->“窗口”->“输出”。现在,在与错误列表相邻的屏幕底部,应该有一个“输出”选项卡。单击该选项卡,然后在下拉列表中仔细检查是否显示调试流的输出


    备注:我想新安装时会显示输出窗口,但我记不起来了。如果没有,或者您意外关闭了它,请按照以下说明操作。

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

    通过这种方式,您可以确定何时执行功能以及程序何时存在

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

    要保持windows控制台打开,并且不使用标准输出流以外的其他输出方法,请转到项目名称->属性->链接器->系统


    在那里,选择SUBSYSTEM选项卡并标记Console(/SUBSYSTEM:Console)。完成此操作后,无论何时要编译,都可以使用Ctrl+F5(启动而不调试),控制台将保持打开状态。

    出于某种原因,我经常遇到此问题,我不明白为什么没有提到此解决方案:

    单击查看→ 输出(或按住Ctrl键并点击W>O)

    然后,控制台输出将出现在错误列表、局部变量和监视窗口所在的位置


    注意:我正在使用Visual Studio 2015。

    在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
    

    Visual Studio本身覆盖了控制台窗口,请尝试最小化Visual Studio窗口,因为它们相互重叠。

    System.Diagnostics.Debug.Write(如果OP没有名称空间)啊,是的,我只是习惯于点击控制+句点:)jonsca:我有一个名称空间,为什么我可以只使用console.writeline,我希望我的程序写入控制台,这不仅仅是出于测试原因??如果你的应用程序是控制台应用程序,你可以使用console.writeline打印到控制台窗口,或者如果你的应用程序是windows窗体应用程序,你可以使用debug.write。检查此链接以了解更多信息有趣的是,我不知道,是的,我的应用程序是一个windows窗体应用程序,但我没有尝试使用debug.Write方法。同样的问题,它可以编译,但我无法在任何地方看到输出。Console.ReadLine也可以工作。您只需按enter键继续,因为Read使用任何标准键。这是一个windows窗体应用程序,debug.write或console.writeline方法似乎有效。嗯,为什么要输出到