C# Консоль меняет цвета предыдущих команд / выходов - PullRequest
0 голосов
/ 26 января 2020

Трудно найти подходящее название для этого вопроса, я стараюсь описать мою проблему как можно лучше.

В своей программе командной строки я использую библиотеку ColorfulConsole ( в основном из-за стилей). Все работает очень хорошо, все мои цвета отображаются правильно.

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

Допустим, я запускаю program.exe init -p <unknown directory>. Я получаю следующий (правильный) вывод:

command failed

Время выполнения отличается от других, это была моя ошибка, но не имеет ничего общего с проблемой

program.exe init -p <known directory>

command failed successfully?

command executed successfully

Вопрос A : возможно ли сохранить цвета предыдущих команд без их перезаписи?

Вопрос B : Я пропустил что-то фундаментальное?

Я уже пытался:

  1. Выполнить Colorful.Console.ReplaceAllColorsWithDefaults(); после выполнения программы
  2. Выполнить Console.ResetColor(); после выполнения программы
  3. Выполнить Console.Clear(); после выполнения программы (вроде работает, но очистка консоли после каждой команды не так уж хороша)
  4. Найти связанную проблему проблему
  5. Найти что-то связанное с SO

Я знаю, что консоль Windows имеет ограничение цвета, но я Я не думаю, что это как-то связано с этим. Любая помощь приветствуется.

РЕДАКТИРОВАТЬ (минимальный воспроизводимый пример с использованием Colorful.Console @ 1.2.10)

using System;
using System.Drawing;
using Console = Colorful.Console;

namespace MinimalReproducibleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Compiled with Color.Firebrick", Color.Firebrick);
        }
    }
}

Когда я запускаю эту программу, текст отображается в цветной огнеупорный кирпич:

with firebrick

, если я перекомпилирую программу другим цветом и выполню ее:

with coral

...