帶有彩色微詞的擴展.NET控制台,多行固定,寫入位置和最有用的utils。它的設計重點是用於在復雜任務中的專業使用:大量異步日誌,需要突出顯示重要和PIN摘要數據。 Xconsole可用於多任務處理,可安全可用於控制台緩衝區溢出(9000多行),易於使用。
主要功能如下圖所示:
通過軟件包管理器或將軟件包引用添加到 *.csproj文件中。在Nuget Gallery上查看更多方法。
PM> Install-Package XConsole
< PackageReference Include = " XConsole " Version = " 1.5.* " />開始使用XConsole的簡單方法是將using添加到您的代碼中。之後,您可以像往常一樣編寫Console ,並獲得Xconsole的所有功能。另外,您可以通過將以下行添加到 *.csproj文件來立即升級到XConsole。
// 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下表顯示了所有標準控制台顏色及其字母名稱:
如果您使用.NET 5+在Windows 10+上運行您的應用程序,則可以使用擴展顏色:
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方法手動更新動態PIN。要刪除PIN,請致電Unpin方法。
Console . UpdatePin ( ) ; // Update dynamic pin manually
Console . Unpin ( ) ; // Remove pin Xconsole提供了一個ConsolePosition結構,該結構是控制台緩衝區區域內的位置。如果您有很多日誌消息,這是一個重要功能。該結構可抵抗控制台緩衝區溢出(9000多個日誌線),並且始終指向控制台緩衝區區域內的正確位置。每個Write和WriteLine方法都會返回一個開始和終點位置。您可以保存它們並以後使用以重寫文本或將文本添加到消息末尾。為此, ConsolePosition有自己的Write方法,它返回了新的終點位置。
NB! 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許可證獲得許可的。