ShellProgressBar 5.2.0

dotnet add package ShellProgressBar --version 5.2.0                
NuGet\Install-Package ShellProgressBar -Version 5.2.0                
命令旨在在 Visual Studio 的软件包管理器控制台中使用,因为它是使用 NuGet 模块的 Install-Package 版本的。
<PackageReference Include="ShellProgressBar" Version="5.2.0" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用该软件包。
paket add ShellProgressBar --version 5.2.0                
#r "nuget: ShellProgressBar, 5.2.0"                
#r 指令可以使用在 F# Interactive 和多语言笔记本中。将其复制到交互式工具或脚本的源代码中,以引用软件包。
// Install ShellProgressBar as a Cake Addin
#addin nuget:?package=ShellProgressBar&version=5.2.0

// Install ShellProgressBar as a Cake Tool
#tool nuget:?package=ShellProgressBar&version=5.2.0                

ShellProgressBar

在控制台应用程序中可视化(并发)进度

这是一个很好的小库,可以可视化长时间运行的命令行任务。

.NET Core 兼容!

它还支持启动子进度条,这允许您非常不错地可视化依赖关系和并发。

已在 OSX 上进行测试

example osx

和 Windows 上

example win cmd

(PowerShell 也可以,请参阅下面的示例)

安装

在 NuGet 上获取它: https://nuget.net.cn/packages/ShellProgressBar/

使用方法

使用方法非常简单

const int totalTicks = 10;
var options = new ProgressBarOptions
{
    ProgressCharacter = '─',
    ProgressBarOnBottom = true
};
using (var pbar = new ProgressBar(totalTicks, "Initial message", options))
{
    pbar.Tick(); //will advance pbar to 1 out of 10.
    //we can also advance and update the progressbar text
    pbar.Tick("Step 2 of 10"); 
}

报告进度

有两种方法可以报告进度。您可以使用上面描述的 Tick() 函数。或者,您可以通过调用进度条对象的 AsProgress<T>() 以获得 IProgress<T> 实例来报告进度。

对于进度类型是介于 0.0 和 1.0 之间的 float 值的简单情况,表示完成百分比,请使用 progressBar.AsProgress<float>()

using ProgressBar progressBar = new ProgressBar(10000, "My Progress Message");
IProgress progress = progressBar.AsProgress<float>();
progress.Report(0.25); // Advances the progress bar to 25%

请在 src/ShellProgressBar.Example/Examples 目录中的 IntegrationWithIProgressExample.csIntegrationWithIProgressPercentageExample.cs 中查看完整示例。

选项

进度条位置

const int totalTicks = 10;
var options = new ProgressBarOptions
{
	ProgressCharacter = '─',
	ProgressBarOnBottom = true
};
using (var pbar = new ProgressBar(totalTicks, "progress bar is on the bottom now", options))
{
	TickToCompletion(pbar, totalTicks, sleep: 500);
}

默认情况下,进度条位于顶部,消息位于底部。如果需要,可以将其翻转。

bar_on_bottom

样式更改

const int totalTicks = 10;
var options = new ProgressBarOptions
{
	ForegroundColor = ConsoleColor.Yellow,
	ForegroundColorDone = ConsoleColor.DarkGreen,
	BackgroundColor = ConsoleColor.DarkGray,
	BackgroundCharacter = '\u2593'
};
using (var pbar = new ProgressBar(totalTicks, "showing off styling", options))
{
	TickToCompletion(pbar, totalTicks, sleep: 500);
}

可以样式化的方面很多,包括前景色、背景(非活动部分)以及完成时的颜色变化。

styling

无实时更新

默认情况下,计时器每500毫秒绘制屏幕一次。您可以将进度条配置为仅在调用.Tick()时绘制。

const int totalTicks = 5;
var options = new ProgressBarOptions
{
	DisplayTimeInRealTime = false
};
using (var pbar = new ProgressBar(totalTicks, "only draw progress on tick", options))
{
	TickToCompletion(pbar, totalTicks, sleep:1750);
}

如果您查看经过的时间,您会看到它跳过了02:00

update_on_tick

后代进度条

进度条可以产生子进度条,每个子进度条都可以产生自己的进度条。每个子进度条都有自己的样式选项。

这对于可视化并发运行的任务来说非常出色。

const int totalTicks = 10;
var options = new ProgressBarOptions
{
	ForegroundColor = ConsoleColor.Yellow,
	BackgroundColor = ConsoleColor.DarkYellow,
	ProgressCharacter = '─'
};
var childOptions = new ProgressBarOptions
{
	ForegroundColor = ConsoleColor.Green,
	BackgroundColor = ConsoleColor.DarkGreen,
	ProgressCharacter = '─'
};
using (var pbar = new ProgressBar(totalTicks, "main progressbar", options))
{
	TickToCompletion(pbar, totalTicks, sleep: 10, childAction: () =>
	{
		using (var child = pbar.Spawn(totalTicks, "child actions", childOptions))
		{
			TickToCompletion(child, totalTicks, sleep: 100);
		}
	});
}

children

默认情况下,子进度条完成时会折叠,为新的/并行的进度条腾出空间。

您可以指定CollapseWhenFinished = false来保留它们。

var childOptions = new ProgressBarOptions
{
	ForegroundColor = ConsoleColor.Green,
	BackgroundColor = ConsoleColor.DarkGreen,
	ProgressCharacter = '─',
	CollapseWhenFinished = false
};

children_no_collapse

FixedDurationBar

ProgressBar非常适合可视化未知运行时间的任务。如果您有一个您知道需要固定时间量的任务,还有一个名为FixedDurationBar的子类。FixedDurationBar将自动调用Tick(),但除此之外,所有选项和用法都是相同的。但除了它依赖于实时更新功能,禁用该功能将引发错误。

FixedDurationBar公开了一个IsCompletedCompletedHandle

致谢

初始实现受到了这篇文章的启发。[链接](http://www.bytechaser.com/en/articles/ckcwh8nsyt/display-progress-bar-in-console-application-in-c.aspx)

显然,任何向此存储库发送PR的人 😍

产品 兼容和额外的计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp1.0 已计算。 netcoreapp1.1 已计算。 netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET 标准化 netstandard1.3 兼容。 netstandard1.4 已计算。 netstandard1.5 已计算。 netstandard1.6 已计算。 netstandard2.0 兼容。 netstandard2.1 已计算。
.NET 框架 net46 已计算。 net461 兼容。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen30 已计算。 tizen40 已计算。 tizen60 已计算。
通用Windows平台 uap 已计算。 uap10.0 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET Standard

NuGet 包 (13)

显示依赖于 ShellProgressBar 的前 5 个 NuGet 包

下载
TIKSN-Framework

这是一个 .NET Framework 增强框架。主要功能包括版本控制、金融、货币、外汇、货币定价策略、遥测、组合加权进度、仓储以及使用 Entity Framework Core、网络连接服务触发的实现,工作设置、Windows 记录配置源、Azure 存储库、MongoDB 仓储、NoDB 仓储、语言和区域本地化、序列化、Rest 请求器、Rest 仓储、依赖注入、Composition Root 设置的基类。

Microsoft.CST.ApplicationInspector.Commands

Microsoft Application Inspector 是一个软件源代码分析工具,有助于快速识别和理解源代码中的已知特性和其他有趣特征,从而确定软件是什么或做什么。

stryker

此库包含所有stryker突变测试逻辑。此包不包含运行器。如果您想扩展stryker以使用自己的运行器,请使用此包。

Chiron.Cli.Lab

Chiron CLI组件。

Catalyst.Tools.Importer

包描述

GitHub存储库 (12)

显示依赖ShellProgressBar的前5个最受欢迎的GitHub存储库

存储库 星级
microsoft / ApplicationInspector
一个用于快速突现感兴趣特性和其他特征的源代码分析器。使用基于json的规则引擎进行静态分析以回答“代码中有什么?”问题。适用于在使用之前扫描组件或检测特征级别变更。
stryker-mutator / stryker-net
为.NET核心和.NET框架提供突变测试!
bezzad / Downloader
.NET应用程序的快速、跨平台且可靠的分块下载器,具有异步进度事件。
takuya-takeuchi / FaceRecognitionDotNet
适用于Windows、MacOS和Linux的.NET上最简单的面部识别api
Reloaded-Project / Reloaded-II
为任何原生游戏X86、X64提供通用.NET Core驱动修改框架。
版本 下载 最后更新
5.2.0 489,580 6/7/2022
5.1.0 714,354 1/29/2021
5.0.0 532,851 2/23/2020
4.3.0 207,506 8/20/2019
4.2.0 223,685 8/25/2018
4.1.1 6,202 8/15/2018
4.0.0 52,762 11/12/2017
3.0.0 137,052 4/11/2016
1.2.0 20,771 8/26/2015
1.1.0 13,767 6/19/2014
1.0.0 10,766 11/14/2013