最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用?CliWrap?讓C#中的命令行交互(推薦)

 更新時(shí)間:2021年12月31日 10:14:36   作者:SpringLeee  
這篇文章主要介紹了使用?CliWrap?讓C#中的命令行交互舉重若輕,這是一個(gè)在?.NET?平臺(tái)使用的命令行交互工具庫,?通過在C#?中使用?Fluent?的API,?讓命令行交互,感興趣的朋友跟隨小編一起看看吧

在代碼中進(jìn)行命令行交互是一個(gè)很常見的場景, 特別是在一些CI CD 自動(dòng)化流程中, 在這之前我們會(huì)使用 System.Diagnostics.Process API, 現(xiàn)在有一個(gè)更靈活的工具 CliWarp, 這是一個(gè)在 .NET 平臺(tái)使用的命令行交互工具庫, 通過在C# 中使用 Fluent 的API, 讓命令行交互舉重若輕。

https://github.com/Tyrrrz/CliWrap

主要特性如下:

  • 基于 System.Diagnostics.Process
  • 簡單, 流暢的 API 設(shè)計(jì)
  • 靈活的支持管道模式
  • 安全異步并且支持 cancellation API
  • 跨平臺(tái), 可在 Windows、Linux 和 macOS 使用
  • 支持 .NET Standard 2.0+、.NET Core 3.0+、.NET Framework 4.6.1+

和 shell 是類似的,CliWrap 的基本工作單元是一個(gè) command , 首先會(huì)執(zhí)行 Cli.Wrap(...) 創(chuàng)建 command, 參數(shù)是可執(zhí)行文件的路徑, 然后通過 fluent api 配置, 最后調(diào)用 ExecuteAsync 運(yùn)行命令,如下:

using CliWrap;
using CliWrap.Buffered;

var result = await Cli.Wrap("path/to/exe") 
     //....
    .ExecuteBufferedAsync(); 

配置參數(shù)

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));  

配置工作目錄

默認(rèn)是當(dāng)前目錄, 你也可以指定文件夾的相對路徑和絕對路徑

var cmd = Cli.Wrap("git")
    .WithWorkingDirectory("c:/projects/my project/");

配置環(huán)境變量

var cmd = Cli.Wrap("git")
    .WithEnvironmentVariables(env => env
        .Set("GIT_AUTHOR_NAME", "John")
        .Set("GIT_AUTHOR_EMAIL", "john@email.com"));

超時(shí)和取消

using var cts = new CancellationTokenSource(); 
 
cts.CancelAfter(TimeSpan.FromSeconds(10));

var result = await Cli.Wrap("path/to/exe").ExecuteAsync(cts.Token);

基于拉取的事件流

除了執(zhí)行命令之外,CliWrap 還支持事件流模型, 可以訂閱相關(guān)的事件回調(diào)。

  • StartedCommandEvent -- 僅接收一次,當(dāng)命令開始執(zhí)行時(shí)(包含 process ID)
  • StandardOutputCommandEvent -- 每次底層進(jìn)程向輸出流寫入新行時(shí)收到(包含文本作為字符串)
  • StandardErrorCommandEvent -- 每次底層進(jìn)程向錯(cuò)誤流寫入新行時(shí)收到(包含文本作為字符串)
  • ExitedCommandEvent -- 僅接收一次,當(dāng)命令完成執(zhí)行時(shí)(包含 exit code)
using 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;
    }
}

輸出結(jié)果如下:

希望對您有用! https://github.com/Tyrrrz/CliWrap

到此這篇關(guān)于使用 CliWrap 讓C#中的命令行交互舉重若輕的文章就介紹到這了,更多相關(guān)C#命令行交互內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Unity UGUI教程之實(shí)現(xiàn)滑頁效果

    Unity UGUI教程之實(shí)現(xiàn)滑頁效果

    使用UGUI提供的ScrollRect和ScrollBar組件實(shí)現(xiàn)基本滑動(dòng)以及自己控制每次移動(dòng)一頁來達(dá)到滑頁的效果。具體實(shí)現(xiàn)思路請參考下本教程
    2016-04-04
  • C# 中類型轉(zhuǎn)換方式之顯式轉(zhuǎn)換和 as 運(yùn)算符

    C# 中類型轉(zhuǎn)換方式之顯式轉(zhuǎn)換和 as 運(yùn)算符

    在 C# 中,有兩種常見的類型轉(zhuǎn)換方式:顯式轉(zhuǎn)換和as 運(yùn)算符,它們用于在不同類型之間進(jìn)行轉(zhuǎn)換,以下是對這兩種轉(zhuǎn)換方式的詳細(xì)解釋和示例說明,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • c# 重載WndProc,實(shí)現(xiàn)重寫“最小化”的實(shí)現(xiàn)方法

    c# 重載WndProc,實(shí)現(xiàn)重寫“最小化”的實(shí)現(xiàn)方法

    在做“亦歌桌面版”的時(shí)候,發(fā)現(xiàn)當(dāng)打開歌詞狀態(tài)下,用最小化隱藏窗體到托盤的話(如下code #1),在調(diào)出發(fā)現(xiàn)歌詞縮小了(雖然顯現(xiàn)的窗體大小跟剛才一樣),從這點(diǎn)看調(diào)用該方法其實(shí)窗體大小是改變了的(這個(gè)過程只是不可視而已)。
    2009-02-02
  • WPF/Silverlight實(shí)現(xiàn)圖片局部放大的方法分析

    WPF/Silverlight實(shí)現(xiàn)圖片局部放大的方法分析

    這篇文章主要介紹了WPF/Silverlight實(shí)現(xiàn)圖片局部放大的方法,結(jié)合實(shí)例形式分析了WPF/Silverlight針對圖片屬性操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03
  • C#二叉搜索樹插入算法實(shí)例分析

    C#二叉搜索樹插入算法實(shí)例分析

    這篇文章主要介紹了C#二叉搜索樹插入算法,實(shí)例分析了C#二叉樹操作的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • 淺談Unity腳本生命周期與執(zhí)行順序

    淺談Unity腳本生命周期與執(zhí)行順序

    在Unity中,腳本可以理解為附加在游戲?qū)ο笊系挠糜诙x游戲?qū)ο笮袨榈闹噶畲a。必須綁定在游戲?qū)ο笊喜拍荛_始它的生命周期。游戲?qū)ο罂梢岳斫鉃槟苋菁{各種組件的容器,游戲?qū)ο蟮乃薪M件一起決定了這個(gè)對象的行為和游戲中的表現(xiàn)
    2021-06-06
  • 在C#中如何使用ResNet50v2進(jìn)行圖像識(shí)別

    在C#中如何使用ResNet50v2進(jìn)行圖像識(shí)別

    ONNX?運(yùn)行時(shí)推理可以實(shí)現(xiàn)更快的客戶體驗(yàn)和更低的成本,支持來自深度學(xué)習(xí)框架如?PyTorch和TensorFlow/Keras以及經(jīng)典機(jī)器學(xué)習(xí)庫如?scikit-learn、LightGBM、XGBoost?等的模型,這篇文章主要介紹了在C#中如何使用ResNet50v2進(jìn)行圖像識(shí)別,需要的朋友可以參考下
    2024-07-07
  • C# 實(shí)現(xiàn)特殊字符快速轉(zhuǎn)碼

    C# 實(shí)現(xiàn)特殊字符快速轉(zhuǎn)碼

    這篇文章主要介紹了C# 實(shí)現(xiàn)特殊字符快速轉(zhuǎn)碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#關(guān)于類的只讀只寫屬性實(shí)例分析

    C#關(guān)于類的只讀只寫屬性實(shí)例分析

    這篇文章主要介紹了C#關(guān)于類的只讀只寫屬性實(shí)例分析,對于初學(xué)者更好的理解類的只讀只寫屬性有一定的幫助,需要的朋友可以參考下
    2014-07-07
  • C#數(shù)組學(xué)習(xí)相關(guān)資料整理

    C#數(shù)組學(xué)習(xí)相關(guān)資料整理

    最近開始學(xué)習(xí)c#,并有幸接觸到了數(shù)組方便的操作,感覺確實(shí)不錯(cuò),這里簡單的整理下c#相關(guān)的學(xué)習(xí)資料,方便大家學(xué)習(xí)
    2012-09-09

最新評(píng)論

云安县| 右玉县| 前郭尔| 南宁市| 车险| 治县。| 江城| 宁都县| 六枝特区| 文水县| 二连浩特市| 清原| 新沂市| 双辽市| 乌拉特中旗| 炉霍县| 社旗县| 柳州市| 合肥市| 金门县| 林甸县| 镶黄旗| 元江| 柳州市| 安徽省| 星座| 琼结县| 叶城县| 汨罗市| 河北省| 新津县| 大丰市| 丰原市| 额尔古纳市| 招远市| 中卫市| 莱西市| 合山市| 达日县| 禹城市| 鸡泽县|