设置 Console.WriteLine 和调试.WriteLine

发布于 2024-11-14 22:58:30 字数 244 浏览 2 评论 0原文

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

附带说明一下,VS 如何将 System.Diagnostics.Debug.WriteLine("This is magic"); 挂钩到输出窗口?

When I create a Console Application in Visual Studio, a cmd Window is automatically provided on which text can be written to and read from. Where is this behaviour set up? Does VS do it or is it merely a consequence of a compiled .Net program?

On a side note, how does VS hook System.Diagnostics.Debug.WriteLine("This is magic"); up to the output Window?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡笑忘祈一世凡恋 2024-11-21 22:58:30

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

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

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

The console behaviour is part of the PE header in the exe; there is a flag to distinguish between console and windows apps. The value of this flag is pretty much the only fundamental difference between a windows exe and a console exe (you can still create forms from a console exe, etc - and you can write to the console from a windows exe, although you won't be able to see anything).

You can toggle this flag using editbin if you want to play with it - the /subsystem:windows flag, in particular.

The debug output is because the debugger attaches to pre-defined trace points to gather the output. If you press ctrl+f5 it runs without attaching any of these hooks, so you get something closer to running it directly from the shell.

独﹏钓一江月 2024-11-21 22:58:30

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

when your console application is compiled, it creates an .exe file which is a console application. cmd window is invoked if you start that exe, say from windows explorer. If you run that app without debugger, it's essentially the same thing as if you ran it from Run command or windows explorer...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文