Repolode
Tyrrrz

Tyrrrz/CliWrap

一个 .NET 命令行进程调用库,提供流式配置、标准输入输出管道和异步取消功能。

Star
5,010
Fork
285
未关闭 Issue
3
最近提交
3天前

这是什么?

CliWrap 是一个 .NET 库,用流式、不可变的 API 封装了 System.Diagnostics.Process,便于运行命令行工具。通过 Cli.Wrap 指定可执行文件路径,再配置参数、工作目录、环境变量等选项,最后调用 ExecuteAsync 或其他高级执行方法即可运行。

标准输入、输出和错误流可以连接到文件、流、字节数组、字符串、StringBuilder、委托或另一个命令,也可以用管道运算符把多个命令串联起来。库还提供缓冲执行模式,以及拉取式和推送式事件流,便于实时处理进程输出。

取消操作既支持强制终止,也支持发送中断信号的优雅取消。默认情况下,进程返回非零退出码时会抛出异常。该库没有外部依赖,支持 .NET Standard 2.0、.NET Core 3.0+ 和 .NET Framework 4.6.2+。

核心功能

  • 01流式、不可变的命令配置,支持参数、工作目录和环境变量。
  • 02标准输入、输出和错误流可灵活接入文件、流、字符串、委托或其他命令。
  • 03提供缓冲执行,以及拉取式和推送式事件流来处理输出。
  • 04异步 API,支持强制终止和优雅取消。
  • 05进程返回非零退出码时默认抛出异常,也可关闭该校验。
  • 06无外部依赖。

适用场景

  • 在 .NET 应用中调用 git、ffmpeg、docker 等外部命令行工具。
  • 将进程输出实时写入日志或界面。
  • 通过管道把多个命令行工具串联起来处理数据。
  • 为长时间运行的进程设置超时和优雅关闭。

快速上手

  1. 1

    通过 NuGet 安装 CliWrap 包

    dotnet add package CliWrap
  2. 2

    在 C# 代码中引入命名空间,调用 Cli.Wrap(...) 并传入可执行文件路径,然后调用 ExecuteAsync()

使用前须知

  • README 要求在使用本项目或其源代码之前,同意一份关于俄罗斯和乌克兰的政治使用条款。
  • 资源策略选项在不同平台上的支持程度不一。
  • 除用户名外的凭据选项仅在 Windows 上可用。

收录于专题

标签

#dotnet#csharp#cli#process#piping#async#cancellation#command-line#dotnet-core#dotnet-standard

常见问题

CliWrap 是什么?
一个 .NET 命令行进程调用库,提供流式配置、标准输入输出管道和异步取消功能。 CliWrap 是一个 .NET 库,用流式、不可变的 API 封装了 System.Diagnostics.Process,便于运行命令行工具。通过 Cli.Wrap 指定可执行文件路径,再配置参数、工作目录、环境变量等选项,最后调用 ExecuteAsync 或其他高级执行方法即可运行。
CliWrap 可以免费使用吗?用的什么许可证?
CliWrap 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
CliWrap 还在维护吗?
活跃维护中。CliWrap 最近一次提交是在 2026年11月4日。
CliWrap 适合用来做什么?
在 .NET 应用中调用 git、ffmpeg、docker 等外部命令行工具。 将进程输出实时写入日志或界面。 通过管道把多个命令行工具串联起来处理数据。 为长时间运行的进程设置超时和优雅关闭。
CliWrap 怎么安装和运行?
通过 NuGet 安装 CliWrap 包: dotnet add package CliWrap 在 C# 代码中引入命名空间,调用 Cli.Wrap(...) 并传入可执行文件路径,然后调用 ExecuteAsync()
在哪里获取 CliWrap?
源代码和安装说明在 GitHub 上:https://github.com/Tyrrrz/CliWrap

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目