PromptPlus 是一个专注于 .NET Core 的命令行工具包,它为开发者提供了一套丰富的控件和强大的命令,用来创建专业的交互式的命令行应用程序。这个库简化了命令行界面(CLI)应用的开发过程,使得开发者可以更容易地添加各种输入控件和增强用户体验。此库是使用C#开发的,目标平台支持 netstandard2.1, .NET 6 , .NET 7 和 .NET 8。
主要功能和特点:
多样的输入控件:
支持多种类型的用户输入,如文本、密码、选择列表、复选框、滑块等。
提供更复杂的控件,例如日历、表格、文件浏览器等。
高度定制化:
开发者可以根据需要自定义每个控件的外观和行为,包括颜色、样式以及验证规则。
支持绑定数据源到控件,实现动态内容加载。
跨平台支持:
由于是基于 .NET Core 构建,因此可以在 Windows、Linux 和 macOS 上运行。
异步操作:
允许使用异步方法处理长时间运行的任务而不阻塞用户界面。
事件驱动编程模型:
支持通过事件监听用户交互,如按键、选择变化等,从而做出响应。
国际化与本地化:
内置对多语言的支持,方便创建面向全球用户的 CLI 应用。
易于集成:
可以轻松地将 PromptPlus 集成到现有的 .NET Core 项目中。
文档和社区支持:
提供详细的官方文档和活跃的开源社区,有助于解决问题并获取最佳实践。
安装及使用:
1、使用命令进行安装:
Install-Package PromptPlus 或者
dotnet add package PromptPlus
2、使用VS的Nuget包管理器直接搜索添加引用
安装完成后,按照官方文档中的指导,在代码里引入相应的命名空间,并根据需求创建和配置所需的控件。
部分控件示例:
Banner
![](/files/attmgn/2025/1/admin20250122170938681_1.jpg)
![](/files/attmgn/2025/1/admin20250122170938700_2.jpg)
条形图
![](/files/attmgn/2025/1/admin20250122170938839_3.jpg)
进度条
![](/files/attmgn/2025/1/admin20250122170938875_4.jpg)
日历
![](/files/attmgn/2025/1/admin20250122170938945_5.jpg)
输入及验证
![](/files/attmgn/2025/1/admin20250122170938997_6.jpg)
开关
![](/files/attmgn/2025/1/admin20250122170939034_7.jpg)
表格
![](/files/attmgn/2025/1/admin20250122170939066_8.jpg)
代码编写支持流式编程,比如以下代码:
PromptPlus.Setup((cfg) =>
{
cfg.PadLeft = 2;
cfg.PadRight = 2;
cfg.Culture = new CultureInfo("en-us");
cfg.BackgroundColor = ConsoleColor.Blue;
});
PromptPlus.Join()
.SingleDash($"[yellow]Console Information[/]", DashOptions.DoubleBorder, 1 );
.WriteLine($"IsTerminal: {PromptPlus.IsTerminal}");
.WriteLine($"IsUnicodeSupported: {PromptPlus.IsUnicodeSupported}");
.WriteLine($"OutputEncoding: {PromptPlus.OutputEncoding.EncodingName}");
.WriteLine($"ColorDepth: {PromptPlus.ColorDepth}");
.WriteLine($"BackgroundColor: {PromptPlus.BackgroundColor}");
.WriteLine($"ForegroundColor: {PromptPlus.ForegroundColor}");
.WriteLine($"SupportsAnsi: {PromptPlus.SupportsAnsi}");
.WriteLine($"Buffers(Width/Height): {PromptPlus.BufferWidth}/{PromptPlus.BufferHeight}");
.WriteLine($"PadScreen(Left/Right): {PromptPlus.PadLeft}/{PromptPlus.PadRight}\n");
PromptPlus
.KeyPress()
.Config(cfg =>
{
cfg.HideAfterFinish(true)
.ShowTooltip(false)
.ApplyStyle(StyleControls.Tooltips,Style.Plain.Foreground(Color.Grey100));
})
.Spinner(SpinnersType.Balloon)
.Run();
运行效果如下:
![](/files/attmgn/2025/1/admin20250122170939117_9.jpg)
PromptPlus支持4/8/24位颜色,在代码中可以使用以下方式编写:
直接指定颜色
PromptPlus.WriteLine("[RGB(255,0,0) ON WHITE]Test[YELLOW] COLOR [/] BACK COLOR [/] other text");
PromptPlus.WriteLine("[RGB(255,0,0):WHITE]Test[YELLOW] COLOR [/] BACK COLOR [/] other text");
PromptPlus.WriteLine("[#ff0000 ON WHITE]Test [YELLOW] COLOR [/] BACK COLOR [/] other text");
PromptPlus.WriteLine("[RED ON WHITE]Test[YELLOW] COLOR [/] BACK COLOR [/] other text");
PromptPlus.WriteLine("[RED:WHITE]Test[YELLOW] COLOR [/] BACK COLOR [/] other text");
通过Style指定
PromptPlus.WriteLine("Test", new Style(Color.White, Color.Red, Overflow.None));
PromptPlus.WriteLine("Test", new Style(new Color(255, 255, 255), Color.Red, Overflow.None));
PromptPlus.WriteLine("Test", new Style(Color.FromConsoleColor(ConsoleColor.White), Color.Red, Overflow.None));
PromptPlus.WriteLine("Test", new Style(Color.FromInt32(255), Color.Red, Overflow.None));
在控件上指定
PromptPlus
.Input("Input [blue]sample2[/]", "with [yellow]description[/]")
.Run();
private class MylCass
{
[Required(ErrorMessage = "{0} is required!")]
[MinLength(3, ErrorMessage = "Min. Length = 3.")]
[MaxLength(5, ErrorMessage = "Max. Length = 5.")]
[Display(Prompt ="My Input")]
public string MyInput { get; set; }
}
以及
PromptPlus
.Input("Input sample2", "import validator from decorate")
.Default(inst.Text)
.AddValidators(PromptValidators.ImportValidators(inst,x => x!.Text!))
.Run();
PromptPlus的开源地址为:https://github.com/FRACerqueira/PromptPlus
官方文档地址:https://fracerqueira.github.io/PromptPlus
如果无法访问GitHub,可以查看以下文章
阅读原文:原文链接
该文章在 2025/1/22 17:10:37 编辑过