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

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

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

在代碼中進行命令行交互是一個很常見的場景, 特別是在一些CI CD 自動化流程中, 在這之前我們會使用 System.Diagnostics.Process API, 現(xiàn)在有一個更靈活的工具 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 , 首先會執(zhí)行 Cli.Wrap(...) 創(chuàng)建 command, 參數(shù)是可執(zhí)行文件的路徑, 然后通過 fluent api 配置, 最后調用 ExecuteAsync 運行命令,如下:

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

配置工作目錄

默認是當前目錄, 你也可以指定文件夾的相對路徑和絕對路徑

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

超時和取消

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

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

基于拉取的事件流

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

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

輸出結果如下:

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

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

相關文章

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

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

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

    C# 中類型轉換方式之顯式轉換和 as 運算符

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

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

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

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

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

    C#二叉搜索樹插入算法實例分析

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

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

    在Unity中,腳本可以理解為附加在游戲對象上的用于定義游戲對象行為的指令代碼。必須綁定在游戲對象上才能開始它的生命周期。游戲對象可以理解為能容納各種組件的容器,游戲對象的所有組件一起決定了這個對象的行為和游戲中的表現(xiàn)
    2021-06-06
  • 在C#中如何使用ResNet50v2進行圖像識別

    在C#中如何使用ResNet50v2進行圖像識別

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

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

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

    C#關于類的只讀只寫屬性實例分析

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

    C#數(shù)組學習相關資料整理

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

最新評論

河津市| 滁州市| 新兴县| 黄骅市| 报价| 榆树市| 墨江| 铁岭县| 萨迦县| 临清市| 昌乐县| 永宁县| 都匀市| 静安区| 延吉市| 温泉县| 宾阳县| 高平市| 德令哈市| 甘孜县| 全南县| 东辽县| 遂平县| 永登县| 黄梅县| 三台县| 石柱| 隆回县| 若尔盖县| 古丈县| 广灵县| 汉中市| 邮箱| 万荣县| 河津市| 嫩江县| 北海市| 南充市| 英德市| 保亭| 军事|