2011-06-12 65 views
1

当我在Visual Studio中创建控制台应用程序时,会自动提供一个cmd窗口,可以在其上写入和读取文本。这种行为在哪里设置? VS做到了吗?还是仅仅是编译后的.Net程序的后果?设置Console.WriteLine&Debug.WriteLine

在一个侧面说明,请问VSSystem.Diagnostics.Debug.WriteLine("This is magic");输出窗口?

回答

2

控制台行为是exe中PE标头的一部分;有一个标志来区分控制台和Windows应用程序。这个标志的值几乎是Windows EXE和一个控制台exe之间唯一的根本区别(你仍然可以从一个控制台EXE等创建表单 - 你可以从一个Windows EXE写入控制台,尽管你不会能够看到任何东西)。

如果您想使用它 - /subsystem:windows标志,您可以使用editbin来切换此标志。

调试输出是因为调试器附加到预定义的跟踪点以收集输出。如果按ctrl + f5它运行而不是附加任何这些钩子,因此您可以更靠近直接从shell运行它。

+0

这个标志可以在* VS *中设置吗?还是在编译的* exe *中? – aligray 2011-06-12 08:18:55

+0

@aligray - 该标志位于生成的exe文件中。你可以通过选择windows exe和console exe来在VS中选择它。 – 2011-06-12 08:20:16

+1

如果你想看到一个Windows EXE的控制台输出,然后使用P/Invoke调用'[AllocConsole'](http://msdn.microsoft.com/en-us/library/ms681944(VS.85).aspx )。 – Richard 2011-06-12 08:35:48

0

当您的控制台应用程序编译时,它会创建一个.exe文件,它是一个控制台应用程序。 cmd窗口被调用,如果你从Windows资源管理器启动该exe文件。如果你在没有调试器的情况下运行该应用程序,它基本上与从运行命令或Windows资源管理器运行该应用程序一样...