.NET CORE CliWrap 命令行

简介: 【11月更文挑战第12天】`CliWrap` 是一个用于在 .NET 应用中执行外部命令行工具的库,支持 .NET Core 及以上版本。它通过简洁的 API 提供了命令执行、参数传递、工作目录设置、环境变量配置及错误处理等功能。安装可通过 NuGet 完成,示例代码展示了如何使用 `CliWrap` 执行 `dir` 命令并获取输出。
  1. 概述
  • CliWrap是一个用于在.NET 应用程序中方便地执行外部命令行工具的库。它提供了一种简洁、灵活且高效的方式来与命令行交互,使得开发者可以轻松地在自己的.NET 程序(包括.NET Core 及更高版本)中启动和控制外部命令。
  1. 安装
  • 可以通过 NuGet 包管理器来安装CliWrap。在 Visual Studio 中,右键单击项目,选择 “管理 NuGet 包”,然后在浏览选项卡中搜索 “CliWrap” 并安装。也可以使用命令行工具,如在项目目录下执行dotnet add package CliWrap来安装。
  1. 基本使用示例
  • 以下是一个简单的示例,用于执行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来获取命令的标准输出内容并打印到控制台。


  1. 命令参数传递
  • 可以向命令传递参数。例如,要执行echo命令并传递一个文本参数,可以这样写:


var result = await Cli.Wrap("echo")
   .WithArguments("Hello, World!")
   .ExecuteBufferedAsync();
Console.WriteLine(result.StandardOutput);


  • 这里WithArguments方法用于指定命令的参数,在这个例子中,echo命令会输出Hello, World!


  1. 工作目录设置
  • 可以设置命令执行的工作目录。例如,假设要在一个特定的文件夹下执行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


  1. 环境变量设置
  • 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使用。


  1. 错误处理
  • 当命令执行出错时,可以通过检查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可以获取错误输出内容。
相关文章
|
存储
.NET Core - 内存配置和命令行配置方式详解
.NET Core - 内存配置和命令行配置方式详解
|
前端开发 Java 程序员
用命令行创建.NET Core
用命令行创建.NET Core
121 0
用命令行创建.NET Core
|
数据安全/隐私保护 Windows
Windows使用net命令行打开共享文件夹
Windows使用net命令行打开共享文件夹
361 0
|
JSON .NET 数据格式
2.1命令行和JSON的配置「深入浅出ASP.NET Core系列」
原文:2.1命令行和JSON的配置「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。 命令行配置  1.新建控制台项目  2.
1164 0
|
JSON .NET 数据格式
2.1命令行和JSON的配置「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。 命令行配置  1.新建控制台项目  2.nuget引入microsoft.aspnetcore.all  这里要注意版本号必须和dotnetcore兼容 3.
813 0
|
数据库 数据安全/隐私保护 Windows
Windows系统命令行net user命令用法
原文:Windows系统命令行net user命令用法 在Windows渗透测试过程中,最常用的要数net user 命令了,但是非常多的时候我们都是对Linux命令非常熟悉,对Windows命令非常熟悉或者了解用法的少只有少,为了以后工作方便,这里记录一下Windows系统中的 net user 命令的用法。
2333 0
|
JSON 前端开发 .NET
菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
命令行配置 我们通过vs2017创建一个控制台项目CommandLineSample   可以看到现在项目以来的是dotnet core framework 我们需要吧asp.net core引用进来,我们可以直接添加Microsoft.
1799 0
.Net Core从命令行读取配置文件
最近在学习博客园腾飞(jesse)的.Net Core视频教程,收益匪浅,在此作推荐 : http://video.jessetalk.cn/ 言归正传,.Net Core应用程序中如何通过命令行读取配置文件呢?首先,新建一个.Net Core控制台引用程序,创建过程在此不在赘述。
939 0