Consola .NET extendida con Microsyntax para colorear, fijación de múltiples múltiples, escritura a posición y más útiles. Está diseñado con un enfoque en el rendimiento para el uso profesional en tareas complejas: una gran cantidad de registros asíncronos, con la necesidad de resaltar datos importantes y de resumen de PIN. Xconsole es seguro para la multitarea, segura para el desbordamiento del búfer de consola (más de 9000 líneas), fácil de usar.
Las características principales se muestran en la siguiente imagen:
Por paquete administrador o agregando referencia de paquete al archivo *.csproj. Más formas de ver en Nuget Gallery.
PM> Install-Package XConsole
< PackageReference Include = " XConsole " Version = " 1.5.* " /> La forma simple de comenzar a usar el xconsole es agregar using su código. Después de eso, puede escribir Console como de costumbre y obtener todas las características de XConsole. Alternativamente, puede actualizar un proyecto completo a XConsole a la vez agregando las siguientes líneas al archivo *.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 > Este truco es excelente para actualizar una aplicación de consola regular existente porque Xconsole es compatible con la consola estándar. Después de la actualización, la aplicación no cambiará cómo funciona a menos que desee comenzar a usar las funciones de XConsole.
Para colorear el texto con colores de consola estándar, debe agregar un prefijo a una cadena. El prefijo consta de una o dos letras que denotan colores, seguido de un ` final, después de lo cual el texto comienza inmediatamente. Denotemos la carta de color del texto como t y la carta de color de fondo como b . En este caso, hay tres patrones de prefijo: T` para cambiar solo el color de texto, TB` para cambiar el texto y los colores de fondo, B` (espacio al principio) para cambiar solo el color de fondo. Para hacer un mensaje multicolor, divídelo en piezas con prefijos de color individuales y pasarlas al método WriteLine única. Asegúrese de que sus mensajes no se rompan por otros hilos.
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" ] ) ; // MulticolorLa siguiente tabla muestra todos los colores de la consola estándar y sus designaciones de letras:
Si está ejecutando su aplicación en Windows 10+ con .NET 5+, los colores extendidos están disponibles para usted:
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 admite el estándar NO_COLOR con una variable de entorno y con una propiedad.
Console . NO_COLOR = true ; // Disable all colors Puede fijar algún texto debajo de los mensajes de registro regulares con el método Pin . El texto fijado puede ser estático o dinámico, contener una o más líneas y, por supuesto, se puede colorear. El PIN dinámico se actualizará automáticamente cada vez que se llamen a los métodos Write o WriteLine . El PIN es resistente al envoltorio de línea y al desbordamiento del búfer de consola (más de 9000 líneas de registro).
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 También puede actualizar un PIN dinámico manualmente utilizando el método UpdatePin . Para eliminar un PIN, llame al método Unpin .
Console . UpdatePin ( ) ; // Update dynamic pin manually
Console . Unpin ( ) ; // Remove pin Xconsole proporciona una estructura ConsolePosition , que es una posición dentro del área del amortiguador de la consola. Esta es una característica importante si tiene muchos mensajes de registro. Esta estructura es resistente al desbordamiento del búfer de consola (más de 9000 líneas de registro) y siempre apunta a la posición correcta dentro del área del búfer de consola. Cada método Write y WriteLine devuelve una posición de inicio y finalización. Puede guardarlos y usar más tarde para reescribir el texto o agregar texto al final del mensaje. Para hacer esto, ConsolePosition tiene su propio método Write , que devuelve una nueva posición final.
¡NÓTESE BIEN! La posición final de WriteLine significa la posición después del último carácter antes de la ruptura de la línea.
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`!" ) ;
También puede obtener o establecer la posición del cursor utilizando la propiedad CursorPosition :
ConsolePosition position = Console . CursorPosition ; // Get cursor position
Console . CursorPosition = new ConsolePosition ( left : 15 , top : 5 ) ; // Set cursor position Readline tiene dos modos adicionales para una entrada segura: enmascarado y oculto. El símbolo de máscara es personalizable.
Console . ReadLine ( ConsoleReadLineMode . Masked ) ; // Masked ReadLine
Console . ReadLine ( ConsoleReadLineMode . Masked , maskChar : '#' ) ; // Masked ReadLine with custom mask
Console . ReadLine ( ConsoleReadLineMode . Hidden ) ; // Hidden ReadLine El xconsole tiene licencia bajo la licencia MIT.