我正在开发一个作为 .NET 控制台应用程序运行的项目。我最初是在 Windows 中编写的,但我刚刚转换为 GNU/Linux 并安装了 Mono,它可以很好地运行我的应用程序,但是输出存在问题。
输出应该是类似 'Loading plugin '/blabla/bla/path' 但你可以看到,嗯.... Giberish
我很确定有某种转义序列导致了这种情况,但我不知道是什么。任何人都知道可能导致这种混乱的原因是什么?
我想通了!这是由更改 Console.Forecolor 或背景颜色引起的。
我认为这要么是单声道中的错误,要么是您的 Linux 发行版中的错误。看这里:
https://github.com/mono/mono/blob/master/mcs/class/corlib/System/TermInfoDriver.cs#L149
现在看看你的 $TERM 是什么样子的——它的内容很可能不是“xterm”,而是类似于“xterm-256color”的东西。你会注意到它掉了下来。究竟发生了什么,我不知道,但我认为它不会落入 ANSI 终端,因为这也应该有效,而是从你的发行版中获取一个 terminfo 文件,它会阻塞并发出无效的转义序列颜色标记。此外,您可能会注意到,一旦您将 $TERM 设置为它可以识别的东西,所有颜色都会有光泽并且效果很好。