Расширенная консоль .NET с раскраскими микросинтаксисом, многослойным закреплением, положением записи и наиболее полезными утилитами. Он разработан с акцентом на производительность профессионального использования в сложных задачах: огромное количество асинхронных журналов, с необходимостью выделения важных и кратких данных. Xconsole безопасен для многозадачности, безопасной для переполнения консольного буфера (9000+ линий), простых в использовании.
Основные особенности показаны на следующем изображении:
По менеджеру пакетов или добавив ссылку на пакет в файл *.csproj. Больше способов увидеть в галерее Nuget.
PM> Install-Package XConsole
< PackageReference Include = " XConsole " Version = " 1.5.* " /> Простой способ начать использовать Xconsole - это using в ваш код. После этого вы можете написать Console как обычно и получить все функции Xconsole. В качестве альтернативы, вы можете обновить весь проект к Xconsole одновременно, добавив следующие строки в файл *.csproj.
// Safely upgrade a single code file to XConsole
using Console = Chubrik . XConsole . XConsole ; < ItemGroup >
<!-- Safely upgrade an entire project to XConsole -->
< Using Include = " Chubrik.XConsole " />
< Using Include = " Chubrik.XConsole.XConsole " Alias = " Console " />
</ ItemGroup > Этот трюк отлично подходит для модернизации существующего регулярного приложения консоли, потому что Xconsole обратно совместим со стандартной консоли. После обновления приложение не изменит, как оно работает, если вы не хотите начать использовать функции Xconsole.
Чтобы раскрасить текст стандартными цветами консоли, вам необходимо добавить префикс в строку. Префикс состоит из одной или двух букв, обозначающих цвета, за которым следует запекающий ` характер», после чего текст сразу начинается. Давайте обозначим букву «Цвет текста как T» и «Письмо о цвете фона» как b . В этом случае существует три узора префикса: T` , чтобы изменить только цвет текста, TB` , чтобы изменить текст и цвета фона, B` (пространство в начале), чтобы изменить только цвет фона. Чтобы сделать многоцветное сообщение, разделите его на части с отдельными префиксами цвета и передайте их методу единой WriteLine . Убедитесь, что ваши сообщения не будут нарушены другими потоками.
Console . WriteLine ( "G`This line is colored using simple microsyntax" ) ; // Single color
Console . WriteLine ( [ "C`It is easy " , "Wb`to use many" , "R` colors in " , "Y`one message" ] ) ; // MulticolorВ следующей таблице показаны все стандартные цвета консоли и обозначения их букв:
Если вы запускаете приложение в Windows 10+ с .NET 5+, вам доступны расширенные цвета:
using Chubrik . XConsole . StringExtensions ;
// Different ways to the same 24-bit color
Console . WriteLine ( "Orange text" . Color ( Color . Orange ) ) ; // Color structure
Console . WriteLine ( "Orange text" . Color ( 255 , 165 , 0 ) ) ; // Red, green & blue
Console . WriteLine ( "Orange text" . Color ( 0xFFA500 ) ) ; // Hexadecimal number
Console . WriteLine ( "Orange text" . Color ( "#FFA500" ) ) ; // Hexadecimal string
// Combinations of text and background colors
Console . WriteLine ( "Orange with an indigo background" . Color ( Color . Orange ) . BgColor ( Color . Indigo ) ) ;
Console . WriteLine ( ( "Lime with " + "a brown" . BgColor ( Color . Brown ) + " background" ) . Color ( Color . Lime ) ) ;
Console . WriteLine ( $ "Aqua with { "a navy" . BgColor ( Color . Navy ) } background" . Color ( Color . Aqua ) ) ; Xconsole поддерживает стандарт NO_COLOR с переменной среды и свойством.
Console . NO_COLOR = true ; // Disable all colors Вы можете прикрепить немного текста ниже регулярных сообщений журнала с помощью метода Pin . Прикрепленный текст может быть статичным или динамичным, содержит одну или несколько линий, и, конечно, может быть окрашен. Динамический вывод будет автоматически обновляться каждый раз, когда называются методы Write или WriteLine . Сковоть устойчив к обертыванию линии и к переполнению консольного буфера (9000+ линий журналов).
Console . Pin ( "Simple static pin" ) ; // Simple static pin
Console . Pin ( [ "Y`Multicolor" , " static pin" ] ) ; // Multicolor static pin
Console . Pin ( "Multiline n static pin" ) ; // Multiline static pin
Console . Pin ( ( ) => "Simple pin, value=" + value ) ; // Simple dynamic pin
Console . Pin ( ( ) => [ "Y`Multicolor" , " pin, value=" , "C`" + value ] ) ; // Multicolor dynamic pin
Console . Pin ( ( ) => [ "Multiline pin, n value=" , "C`" + value ] ) ; // Multiline dynamic pin Вы также можете обновить динамический вывод вручную, используя метод UpdatePin . Чтобы удалить штифт, вызовите метод Unpin .
Console . UpdatePin ( ) ; // Update dynamic pin manually
Console . Unpin ( ) ; // Remove pin Xconsole обеспечивает ConsolePosition структуру, которая является положением в области консольного буфера. Это важная функция, если у вас много сообщений журнала. Эта структура устойчива к переполнению консоли -буфера (9000+ линий журнала) и всегда указывает на правильное положение в области консольного буфера. Каждый метод Write и WriteLine возвращает начало и конечную позицию. Вы можете сохранить их и использовать позже, чтобы переписать текст или добавить текст в конце сообщения. Для этого ConsolePosition имеет свой собственный метод Write , который возвращает новую конечную позицию.
Черт! Конечная позиция WriteLine означает позицию после последнего персонажа до разрыва линии.
var ( begin , end ) = Console . WriteLine ( "Hello, World!" ) ; // Write message and save positions
begin . Write ( "C`HELLO" ) ; // Rewrite part of text
end = end . Write ( " I'm here" ) ; // Add text to the end and update end position
end . Write ( "Y`!" ) ;
Вы также можете получить или установить положение курсора, используя свойство CursorPosition :
ConsolePosition position = Console . CursorPosition ; // Get cursor position
Console . CursorPosition = new ConsolePosition ( left : 15 , top : 5 ) ; // Set cursor position READLINE имеет два дополнительных режима для безопасного ввода: маскирован и скрытый. Символ маски настраивается.
Console . ReadLine ( ConsoleReadLineMode . Masked ) ; // Masked ReadLine
Console . ReadLine ( ConsoleReadLineMode . Masked , maskChar : '#' ) ; // Masked ReadLine with custom mask
Console . ReadLine ( ConsoleReadLineMode . Hidden ) ; // Hidden ReadLine Xconsole лицензирован по лицензии MIT.