Console .NET estendido com microssintex de coloração, fixação multilina, gravação para posicionamento e utilizadores mais úteis. Ele foi projetado com foco no desempenho para uso profissional em tarefas complexas: um grande número de logs assíncronos, com a necessidade de destacar dados de resumo importantes e pin. O XConsole é seguro para multitarefa, seguro para transbordamento de buffer de console (mais de 9000 linhas), fácil de usar.
Os principais recursos são mostrados na imagem a seguir:
Por gerenciador de pacotes ou adicionando referência de pacote ao arquivo *.csproj. Mais maneiras de ver na Nuget Gallery.
PM> Install-Package XConsole
< PackageReference Include = " XConsole " Version = " 1.5.* " /> A maneira simples de começar a usar o Xconsole é using ao seu código. Depois disso, você pode escrever Console como de costume e obter todos os recursos do XConsole. Como alternativa, você pode atualizar um projeto inteiro para o XCONSOLE de uma só vez, adicionando as seguintes linhas ao arquivo *.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 > Esse truque é ótimo para atualizar um aplicativo de console regular existente, porque o XConsole é compatível com o console padrão. Após a atualização, o aplicativo não mudará como ele funciona, a menos que você queira começar a usar os recursos do XConsole.
Para colorizar o texto com cores padrão do console, você precisa adicionar um prefixo a uma string. O prefixo consiste em uma ou duas letras que denotam cores, seguidas por um personagem ` atrás, após o qual o texto começa imediatamente. Vamos denotar a letra de cores do texto como T e a letra de cor de fundo como b . Nesse caso, existem três padrões de prefixo: T` para alterar apenas a cor do texto, TB` para alterar as cores de texto e fundo, B` (espaço no início) para alterar apenas a cor de fundo. Para fazer uma mensagem multicolorida dividir -a em peças com prefixos de cores individuais e passe -os para o método WriteLine única. Certifique -se de que suas mensagens não sejam quebradas por outros threads.
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" ] ) ; // MulticolorA tabela a seguir mostra todas as cores padrão do console e suas designações de cartas:
Se você estiver executando seu aplicativo no Windows 10+ com .NET 5+, as cores estendidas estarão disponíveis para você:
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 ) ) ; O XConsole suporta o padrão NO_COLOR com uma variável de ambiente e uma propriedade.
Console . NO_COLOR = true ; // Disable all colors Você pode fixar algum texto abaixo das mensagens de log regulares com o método Pin . O texto fixado pode ser estático ou dinâmico, contém uma ou mais linhas e, é claro, pode ser colorido. O pino dinâmico será atualizado automaticamente sempre que os métodos Write ou WriteLine forem chamados. O PIN é resistente ao embrulho de linha e ao comando de console (mais de 9000 linhas de log).
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 Você também pode atualizar um pino dinâmico manualmente usando o método UpdatePin . Para remover um pino, ligue para o método Unpin .
Console . UpdatePin ( ) ; // Update dynamic pin manually
Console . Unpin ( ) ; // Remove pin O XConsole fornece uma estrutura ConsolePosition , que é uma posição na área do buffer do console. Esse é um recurso importante se você tiver muitas mensagens de log. Essa estrutura é resistente ao excesso de buffer do console (mais de 9000 linhas de log) e sempre aponta para a posição correta na área do buffer do console. Cada método Write e WriteLine retorna uma posição inicial e final. Você pode salvá -los e usar mais tarde para reescrever o texto ou adicionar texto ao final da mensagem. Para fazer isso, ConsolePosition tem seu próprio método Write , que retorna uma nova posição final.
NB! A posição final da WriteLine significa a posição após o último caractere antes da quebra da linha.
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`!" ) ;
Você também pode obter ou definir a posição do cursor usando a propriedade CursorPosition :
ConsolePosition position = Console . CursorPosition ; // Get cursor position
Console . CursorPosition = new ConsolePosition ( left : 15 , top : 5 ) ; // Set cursor position O ReadLine possui dois modos adicionais para entrada segura: mascarada e oculta. O símbolo da máscara é personalizável.
Console . ReadLine ( ConsoleReadLineMode . Masked ) ; // Masked ReadLine
Console . ReadLine ( ConsoleReadLineMode . Masked , maskChar : '#' ) ; // Masked ReadLine with custom mask
Console . ReadLine ( ConsoleReadLineMode . Hidden ) ; // Hidden ReadLine O XConsole está licenciado sob a licença do MIT.