卢沟桥做网站的公司,百度一下你知道,本地wordpress安装,公司网页介绍模板在代码中进行命令行交互是一个很常见的场景, 特别是在一些CI CD 自动化流程中, 在这之前我们会使用 System.Diagnostics.Process API, 现在有一个更灵活的工具 CliWarp, 这是一个在 .NET 平台使用的命令行交互工具库, 通过在C# 中使用 Fluent 的API, 让命令行交互举重若轻。htt… 在代码中进行命令行交互是一个很常见的场景, 特别是在一些CI CD 自动化流程中, 在这之前我们会使用 System.Diagnostics.Process API, 现在有一个更灵活的工具 CliWarp, 这是一个在 .NET 平台使用的命令行交互工具库, 通过在C# 中使用 Fluent 的API, 让命令行交互举重若轻。https://github.com/Tyrrrz/CliWrap主要特性如下•基于 System.Diagnostics.Process•简单, 流畅的 API 设计•灵活的支持管道模式•安全异步并且支持 cancellation API•跨平台, 可在 Windows、Linux 和 macOS 使用•支持 .NET Standard 2.0、.NET Core 3.0、.NET Framework 4.6.1和 shell 是类似的CliWrap 的基本工作单元是一个 command , 首先会执行 Cli.Wrap(...) 创建 command, 参数是可执行文件的路径, 然后通过 fluent api 配置, 最后调用 ExecuteAsync 运行命令如下:using CliWrap;using CliWrap.Buffered;var result await Cli.Wrap(path/to/exe) //.... .ExecuteBufferedAsync();配置参数var cmd Cli.Wrap(git) .WithArguments(commit -m \my commit\);var cmd Cli.Wrap(git) .WithArguments(new[] {commit, -m, my commit});var cmd Cli.Wrap(git) .WithArguments(args args .Add(clone) .Add(https://github.com/Tyrrrz/CliWrap) .Add(--depth) .Add(20));配置工作目录默认是当前目录, 你也可以指定文件夹的相对路径和绝对路径var cmd Cli.Wrap(git) .WithWorkingDirectory(c:/projects/my project/);配置环境变量var cmd Cli.Wrap(git) .WithEnvironmentVariables(env env .Set(GIT_AUTHOR_NAME, John) .Set(GIT_AUTHOR_EMAIL, johnemail.com));超时和取消using var cts new CancellationTokenSource(); cts.CancelAfter(TimeSpan.FromSeconds(10));var result await Cli.Wrap(path/to/exe).ExecuteAsync(cts.Token);基于拉取的事件流除了执行命令之外CliWrap 还支持事件流模型, 可以订阅相关的事件回调。•StartedCommandEvent -- 仅接收一次当命令开始执行时包含 process ID•StandardOutputCommandEvent -- 每次底层进程向输出流写入新行时收到包含文本作为字符串•StandardErrorCommandEvent -- 每次底层进程向错误流写入新行时收到包含文本作为字符串•ExitedCommandEvent -- 仅接收一次当命令完成执行时包含 exit codeusing CliWrap;using CliWrap.EventStream;var cmd Cli.Wrap(foo).WithArguments(bar);await foreach (var cmdEvent in cmd.ListenAsync()){ switch (cmdEvent) { case StartedCommandEvent started: _output.WriteLine($Process started; ID: {started.ProcessId}); break; case StandardOutputCommandEvent stdOut: _output.WriteLine($Out {stdOut.Text}); break; case StandardErrorCommandEvent stdErr: _output.WriteLine($Err {stdErr.Text}); break; case ExitedCommandEvent exited: _output.WriteLine($Process exited; Code: {exited.ExitCode}); break; }}输出结果如下希望对您有用! https://github.com/Tyrrrz/CliWrap