当我在Visual Studio中创建控制台应用程序时,会自动提供一个cmd
窗口,可以在其上写入和读取文本。这种行为在哪里设置? VS 是否可以执行此操作,还是仅仅是编译 .Net 程序的结果?
另外, VS 挂钩System.Diagnostics.Debug.WriteLine("This is magic");
如何直到输出窗口?
答案 0 :(得分:2)
控制台行为是exe中PE头的一部分;有一个标志来区分控制台和Windows应用程序。这个标志的值几乎是windows exe和控制台exe之间的唯一根本区别(你仍然可以从控制台exe等创建表单 - 你可以从windows exe写入控制台,尽管你不会能够看到任何东西)。
如果您想使用editbin
,可以使用/subsystem:windows
来切换此标记 - 特别是{{1}}标记。
调试输出是因为调试器附加到预定义的跟踪点以收集输出。如果按 ctrl + f5 ,它会运行,而不会附加任何这些挂钩,所以你可以直接从shell运行它。< / p>
答案 1 :(得分:0)
编译控制台应用程序时,它会创建一个.exe文件,这是一个控制台应用程序。如果从Windows资源管理器启动该exe,则调用cmd窗口。如果您在没有调试器的情况下运行该应用程序,它与从“运行”命令或Windows资源管理器中运行它的方式基本相同......