Настройка консоли.Линия записи и отладки.Линия записи

#.net #visual-studio #clr

#.net #visual-studio #среда clr

Вопрос:

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

Кстати, как VS подключается System.Diagnostics.Debug.WriteLine("This is magic"); к окну вывода?

Ответ №1:

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

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

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

Комментарии:

1. Может ли этот флаг быть установлен в VS или это в скомпилированном exe ?

2. @aligray — флаг находится в сгенерированном exe-файле. Вы выбираете это в VS, выбирая между Windows exe и console exe.

3. Если вы хотите увидеть вывод консоли из Windows exe, затем используйте P / Invoke для вызова [AllocConsole ]( msdn.microsoft.com/en-us/library/ms681944 (VS.85).aspx ).

4. Вы можете изменить настройку типа вывода, чтобы получить окно консоли в приложении Winforms (Проект Свойства, вкладка Приложения). Консоль. Вывод Write() перенаправляется в окно вывода IDE процессом размещения Visual Studio (Проект Свойства, вкладка Debug).

Ответ №2:

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