2

Я установил Cygwin (я не очень опытен с ним) и пытаюсь запустить собственное приложение оболочки Windows из него (msbuild.exe, который является средством сборки для .NET Framework, если быть точным).

Когда я запускаю приложение из обычной оболочки cygwin bash, выходные данные приложения отображаются, как и должно, с цветами текста, которые я обычно вижу в командной строке Windows.

Но когда я запускаю программу из мятного терминала, вывод результатов не происходит, весь текст имеет цвет переднего плана по умолчанию. Я озадачен, потому что я ожидал, что цветовая кодировка будет стандартными управляющими символами цветового кода ANSI ...

Это можно исправить?

3 ответа3

3

Скорее всего, приложение использует консольные API-интерфейсы Windows, а не цветовые последовательности ANSI. Mintty - это Unix-терминал (основанный на pty-реализации Cygwin), а не оболочка консоли Windows, поэтому эти вызовы API консоли не будут иметь никакого эффекта.

В настоящее время нет способа сделать эту работу в мятном, хотя есть различные довольно сложные идеи о том, как можно решить эту проблему, на http://code.google.com/p/mintty/issues/detail?id=56. Между тем, обходной путь - просто запустить соответствующую программу в окне консоли. Утилита cygstart - это удобный способ сделать это.

1

Нативные консольные программы Windows часто плохо работают в эмуляторах терминала Cygwin, таких как mintty. См. Документацию Cygwin для объяснения. Не видеть цвета - один из возможных симптомов; худшим симптомом является невозможность ввода в приложение.

Существуют альтернативные консольные программы, которые намного лучше, чем встроенная консоль. Мой текущий выбор терминалов под Windows подходит для программ cygwin или stdio и console2 для консольных программ Windows. Тема уже несколько раз обсуждалась на этом сайте:
Расширенное редактирование командной строки для Windows?
https://superuser.com/questions/87441/alternative-windows-command-shell-and-console
Windows "cmd" Замены
бесплатная замена cmd/powershell обычной копировальной пастой

0

Вы можете использовать bash.exe вместо mintty:

Щелкните правой кнопкой мыши ярлык cygwin и измените его с C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico - на C:\cygwin64\bin\bash.exe --login -i

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .