使用Spectre.Console创建漂亮的控制台应用程序
前言
你是否厌倦了控制台应用程序默认的简陋界面?
这时,你可以试试引用Nuget包Spectre.Console
。
打印使用帮助
首先,我们可以设置控制台应用程序可以执行的命令:
static async Task<int> Main(string[] args)
{var app = new CommandApp();app.Configure(config =>{config.AddCommand<DemoCommand>("demo");config.AddCommand<AnotherCommand>("another");});return await app.RunAsync(args);
}
然后,为每个命令指定参数:
public class DemoCommandSettings : CommandSettings
{[CommandOption("-u|--username")][Description("需要显示的名称")]public string Name { get; set; }
}
最后,实现命令:
public class DemoCommand : AsyncCommand<DemoCommandSettings>
{public override Task<int> ExecuteAsync(CommandContext context, DemoCommandSettings settings){Console.WriteLine($@"Hello {settings.Name}!");return Task.FromResult(0);}
}
可以看到,Spectre.Console自动生成了帮助信息,指导用户如何使用。
与用户交互
我们还可以运行命令时询问用户,进行一定的交互输入:
var name =settings.Name?? AnsiConsole.Ask<string>("What's your [green]name[/]?");
Console.WriteLine($@"Hello {name}!");
显示信息
当我们从用户那里收集完信息后,可以让用户检查信息,以确保所有信息输入正确。例如,我们可以以表格格式呈现摘要:
do
{name = AnsiConsole.Ask<string>("What's your [green]name[/]?");var table = new Table();table.AddColumn("参数");table.AddColumn(new TableColumn("值").Centered());table.AddRow("-u", $@"[green]{name}[/]");AnsiConsole.Write(table);
} while (!AnsiConsole.Confirm("输入是否正确?"));
报告进度
在执行命令时,可以显示进度来告诉用户工作完成的百分比:
await AnsiConsole.Progress().StartAsync(async ctx =>{ var task1 = ctx.AddTask("执行中......");while (!ctx.IsFinished){// 模拟工作耗时await Task.Delay(100);task1.Increment(1);}});
结论
正如我在开始时提到的,使用Spectre.Console可以创建出漂亮的控制台应用程序,更多功能请参看官方文档:https://spectreconsole.net/
如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“
使用Spectre.Console创建漂亮的控制台应用程序相关推荐
- 使用 Visual Studio 创建 .NET 5 控制台应用程序
先决条件 请先安装 Visual Studio 2019 版本 16.8 或更高版本. 创建应用 创建一个名为"DotNet5.ConsoleApp"的 .NET 控制台应用项目 ...
- 如何:创建 C# 控制台应用程序
本主题旨在生成最简单形式的 C# 程序(控制台应用程序)熟悉 Visual Studio 2008 开发环境.由于控制台应用程序是在命令行执行其所有的输入和输出,因此对于快速测试语言功能和编写命令行实 ...
- 控制dcom程序使用端口_使用VS Code调试.net控制台应用程序的方法
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:https://www.byteflying.com/archives/6928. 1.概述 本文向大家介绍使用Visual Stud ...
- 使用Visual Studio Code调试.net控制台应用程序的方法
该文章的最新版本已迁移至个人博客[比特飞],单击链接:使用Visual Studio Code调试.net控制台应用程序的方法 | .Net中文网. 1.概述 本文向大家介绍使用Visual Stud ...
- vs2017控制台应用程序调用DLL
网上这类帖子乱而杂,废话不多说,直接上干货. 1.创建一个c++控制台应用程序,这块不清楚的小伙伴,可以查一下其它的帖子. 2.复制dll.lib..h等你所需要的文件到项目根目录下 3.右键点击项目 ...
- 使用C#创建SQLite控制台应用程序
本文属于原创,转载请注明出处,谢谢! 一.开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 ...
- linux .net 控制台应用程序,使用 Visual Studio Code 创建 .NET 控制台应用程序 - .NET | Microsoft Docs...
教程:使用 Visual Studio Code 创建 .NET 控制台应用程序Tutorial: Create a .NET console application using Visual Stu ...
- ios snapkit m_如何使用自动布局和SnapKit在iOS上创建漂亮的拉伸布局
ios snapkit m by Enabled Solutions 由Enabled Solutions 如何使用自动布局和SnapKit在iOS上创建漂亮的拉伸布局 (How to create ...
- swift视图容器_如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图...
swift视图容器 by Lee Dowthwaite 通过李道思韦特 如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图 (How to create a beautif ...
最新文章
- malloc为什么会报错:memory corruption
- 终于搞懂了sleep/wait/notify/notifyAll
- signature=ecbb5c28a0561484700bbfeebe84cc52,Corps next in line as bond fees are hit by ECB
- Macosx Setdns
- 计算机无法用telnet,为何我的电脑cmd没法使用telnet命令?
- mysql data_add data_sub
- 计算机应用与技术大赛,关于举办2017年燕山大学第一届计算机应用技术与程序设计大赛的通知...
- mercurial和svn_DBA Mercurial简介–处理文件和更改
- DataList控件中使用Xml数据源
- LINUX设备驱动之platform总线
- Windows 7 极限精简 x86 x64 2018年度版
- Ubuntu软件商店下载速度慢
- 电信IHO-3000机顶盒高安版 悦ME刷机固件
- Pyramidal Feature Shrinking for Salient Object Detection阅读笔记
- maven-replacer-plugin 静态资源打包方案js css
- 用汽车拉苹果的例子来说HTTPS的安全性很容易理解 但HTTPS并不是绝对可靠的
- 在树莓派(Linux)上使用FTDI的usb转串口芯片ft232两种驱动方式(VCP和D2xx)
- 在某点邻域有定义_z = f(x, y) 在点 (x0, y0) 的某一邻域内有定义, 当x从x0 取.PPT...
- firefox android 夜间模式,Firefox插件开发:夜间模式
- jQuery仿苏宁易购导航
热门文章
- 数据分析和数据挖掘的理论研究必要性
- Exchange Server 2003邮件服务器系统的基本部署思路
- python数组替换_Python:替换数组中的值
- Django用户注册、登录、注销(一)
- Bomb(hdu 3555)
- CentOS 安装jdk1.7 64位
- 基于JavaScript技术的横排文字转古书式竖排工具
- 计算机专业单元测试卷答案,银保监会考试题库:计算机类模拟试题练习(六)答案...
- 计算机启动程序bios_如何构建自己的计算机,第三部分:准备BIOS
- 管理员获得所有权_在Windows 7中获得注册表项的所有权