- 概述
CliWrap
是一个用于在.NET 应用程序中方便地执行外部命令行工具的库。它提供了一种简洁、灵活且高效的方式来与命令行交互,使得开发者可以轻松地在自己的.NET 程序(包括.NET Core 及更高版本)中启动和控制外部命令。
- 安装
- 可以通过 NuGet 包管理器来安装
CliWrap
。在 Visual Studio 中,右键单击项目,选择 “管理 NuGet 包”,然后在浏览选项卡中搜索 “CliWrap” 并安装。也可以使用命令行工具,如在项目目录下执行dotnet add package CliWrap
来安装。
- 基本使用示例
- 以下是一个简单的示例,用于执行
dir
命令(在 Windows 环境下列出目录内容):
using CliWrap; using CliWrap.Buffered; class Program { static async Task Main() { var result = await Cli.Wrap("dir") .ExecuteBufferedAsync(); Console.WriteLine(result.StandardOutput); } }
- 在这个示例中:
- 首先通过
Cli.Wrap("dir")
来指定要执行的命令(这里是dir
)。 - 然后使用
.ExecuteBufferedAsync()
方法异步执行命令,并将结果缓冲起来。 - 最后,通过
result.StandardOutput
来获取命令的标准输出内容并打印到控制台。
- 命令参数传递
- 可以向命令传递参数。例如,要执行
echo
命令并传递一个文本参数,可以这样写:
var result = await Cli.Wrap("echo") .WithArguments("Hello, World!") .ExecuteBufferedAsync(); Console.WriteLine(result.StandardOutput);
- 这里
WithArguments
方法用于指定命令的参数,在这个例子中,echo
命令会输出Hello, World!
。
- 工作目录设置
- 可以设置命令执行的工作目录。例如,假设要在一个特定的文件夹下执行
git status
命令:
var result = await Cli.Wrap("git") .WithArguments("status") .SetWorkingDirectory("C:/my-git-repo") .ExecuteBufferedAsync(); Console.WriteLine(result.StandardOutput);
- 上述代码中
SetWorkingDirectory
方法指定了命令执行的工作目录为C:/my - git - repo
。
- 环境变量设置
CliWrap
还允许设置环境变量。例如,要设置一个自定义的环境变量并执行一个命令:
var result = await Cli.Wrap("my-command") .WithEnvironmentVariables(new Dictionary<string, string>() { {"MY_VARIABLE", "my-value"} }) .ExecuteBufferedAsync(); Console.WriteLine(result.StandardOutput);
- 这里通过
WithEnvironmentVariables
方法设置了一个名为MY_VARIABLE
,值为my - value
的环境变量,供my - command
使用。
- 错误处理
- 当命令执行出错时,可以通过检查
ExecuteBufferedAsync
返回的结果来获取错误信息。例如:
var result = await Cli.Wrap("invalid-command") .ExecuteBufferedAsync(); if (result.ExitCode!= 0) { Console.WriteLine($"Command failed with exit code {result.ExitCode}. Error: {result.StandardError}"); }
- 在这个例子中,如果命令的退出码(
ExitCode
)不为 0,就表示命令执行出错,通过StandardError
可以获取错误输出内容。