Настройка Console.WriteLine & Debug.WriteLine - PullRequest
1 голос
/ 12 июня 2011

Когда я создаю консольное приложение в Visual Studio, автоматически предоставляется окно cmd, в которое можно записывать и читать текст. Где это поведение настроено? VS делает это или это просто следствие скомпилированной .Net программы?

На заметку, как VS перехватывает System.Diagnostics.Debug.WriteLine("This is magic"); до вывода Окно?

Ответы [ 2 ]

2 голосов
/ 12 июня 2011

Поведение консоли является частью PE-заголовка в exe;есть флаг, чтобы различать консольные и оконные приложения.Значение этого флага в значительной степени является единственным фундаментальным отличием между Windows Exe и Exe консоли (вы все еще можете создавать формы из консоли EXE и т. Д. - и вы можете писать в консоль из Windows EXE, хотя вы не будетебыть в состоянии что-либо видеть).

Вы можете переключать этот флаг, используя editbin, если хотите поиграть с ним - в частности, флаг /subsystem:windows.

Вывод отладки происходит потому, чтоотладчик подключается к заранее заданным точкам трассировки для сбора выходных данных.Если вы нажмете ctrl + f5 , он запустит без , не подключая ни один из этих хуков, так что вы получите что-то ближе к запуску его непосредственно из оболочки.

0 голосов
/ 12 июня 2011

Когда ваше консольное приложение скомпилировано, оно создает файл .exe, который является консольным приложением. Окно cmd вызывается, если вы запускаете этот exe, скажем, из проводника Windows. Если вы запускаете это приложение без отладчика, это по сути то же самое, что если вы запускаете его из команды «Выполнить» или из проводника Windows ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...