」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > C# |使用 System.CommandLine 庫建立命令列 (CLI) 應用程式

C# |使用 System.CommandLine 庫建立命令列 (CLI) 應用程式

發佈於2024-07-31
瀏覽:320

C# | Building a Command-Line (CLI) App using System.CommandLine Library

筆記
您可以查看我個人網站上的其他帖子:https://hbolajraf.net

介紹

在本指南中,我們將探討如何使用 C# 和 .NET 中的 System.CommandLine 程式庫建立命令列介面 (CLI) 應用程式。 System.CommandLine 簡化了為您的應用程式建立強大且功能豐富的命令列介面的過程。

先決條件

開始前,請確保您已安裝以下軟體:

  • .NET SDK(版本5.0或更高版本)

第 1 步:建立一個新的控制台應用程式

dotnet new console -n MyCommandLineApp
cd MyCommandLineApp

步驟2:新增System.CommandLine NuGet包

dotnet add package System.CommandLine --version 2.0.0-beta1.21308.1

步驟 3:定義命令列選項

在您的 Program.cs 中,使用 System.CommandLine 定義命令列選項:

using System.CommandLine;
using System.CommandLine.Invocation;

class Program
{
    static int Main(string[] args)
    {
        var rootCommand = new RootCommand
        {
            new Option("--number", "An integer option"),
            new Option("--flag", "A boolean option"),
            new Argument("input", "A required input argument")
        };

        rootCommand.Handler = CommandHandler.Create((number, flag, input) =>
        {
            // Your application logic goes here
            Console.WriteLine($"Number: {number}");
            Console.WriteLine($"Flag: {flag}");
            Console.WriteLine($"Input: {input}");
        });

        return rootCommand.Invoke(args);
    }
}

第 4 步:運行 CLI 應用程式

dotnet run -- --number 42 --flag true "Hello, CLI!"

將這些值替換為您自己的值並查看輸出。

第 5 步:自訂幫助文本

為您的選項和參數添加描述以獲得更好的幫助文字:

var rootCommand = new RootCommand
{
    new Option("--number", "An integer option"),
    new Option("--flag", "A boolean option"),
    new Argument("input", "A required input argument")
};

rootCommand.Description = "A simple CLI app";
rootCommand.Handler = CommandHandler.Create((number, flag, input) =>
{
    Console.WriteLine($"Number: {number}");
    Console.WriteLine($"Flag: {flag}");
    Console.WriteLine($"Input: {input}");
});

接下來是什麼?

您已使用 C# 和 .NET 中的 System.CommandLine 程式庫成功建立了基本的命令列介面 (CLI) 應用程式。根據您的具體要求自訂和擴展應用程式。
更多資訊請參考官方文件:System.CommandLine GitHub

版本聲明 本文轉載於:https://dev.to/hbolajraf/c-building-a-command-line-cli-app-using-systemcommandline-library-128e如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式界面中實現垂直滾動元素的CSS高度限制 考慮一個佈局,其中我們具有與可滾動的映射div一起移動的subollable map div用戶的垂直滾動,同時保持其與固定側邊欄的對齊方式。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 可以限制地圖的滾動,我們可以利用CS...
    程式設計 發佈於2025-02-06
  • 如何將命令行捲曲轉換為PHP捲曲?
    如何將命令行捲曲轉換為PHP捲曲?
    [2排在PHP腳本。本文提供了一個詳細的解決方案,用於將特定的curl命令轉換為php。 php curl translation: 在php中復制此命令,您可以按照以下步驟進行以下步驟: URL和文件名的動態零件的變量:構造完整的url:初始化curl請求: //設置cookie(如果可用) c...
    程式設計 發佈於2025-02-06
  • 如何在Java字符串中有效替換多個子字符串?
    如何在Java字符串中有效替換多個子字符串?
    利用正則表達式示例示例usage 接下來,您可以使用匹配器查找令牌的所有出現,並用相應的值替換它們: 一旦匯總正則表達式,搜索輸入字符串通常非常快, 。此外,正則表達式還可以靈活地處理複雜的搜索模式,例如涉及括號和量詞的模式。
    程式設計 發佈於2025-02-06
  • 如何在Java列表中有效計算元素的發生?
    如何在Java列表中有效計算元素的發生?
    計數列表中的元素出現在列表 中,在java編程中,列舉列表中列舉元素出現的任務來自列表。為此,收集框架提供了全面的工具套件。 在這種情況下,Batocurrences變量將保持值3,代表動物列表中的“ BAT”出現的數量。 &&& [此方法是簡單的,可以得出準確的結果,使其成為計算列表中元素出現的...
    程式設計 發佈於2025-02-06
  • PHP陣列鍵值異常:了解07和08的好奇情況
    PHP陣列鍵值異常:了解07和08的好奇情況
    PHP數組鍵值問題,使用07&08 在給定數月的數組中,鍵值07和08呈現令人困惑的行為時,就會出現一個不尋常的問題。運行print_r($月份)返回意外結果:鍵“ 07”丟失,而鍵“ 08”分配給了9月的值。 此問題源於PHP對領先零的解釋。當一個數字帶有0(例如07或08)的前綴時,PHP...
    程式設計 發佈於2025-02-06
  • 插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入記錄時如何解決“一般錯誤:2006 MySQL 服務器已消失”介紹:將數據插入MySQL 數據庫有時會導致錯誤“一般錯誤:2006 MySQL 服務器已消失”。當與服務器的連接丟失時會出現此錯誤,通常是由於 MySQL 配置中的兩個變量之一所致。 解決方案:解決此錯誤的關鍵是調整wait_tim...
    程式設計 發佈於2025-02-06
  • \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    使用(1)而不是(;;)會導致無限循環的性能差異? 現代編譯器,(1)和(;;)之間沒有性能差異。 是如何實現這些循環的技術分析在編譯器中: perl: S-> 7 8 unstack v-> 4 -e語法ok 在GCC中,兩者都循環到相同的彙編代碼中,如下所示:。 globl t_時 ...
    程式設計 發佈於2025-02-06
  • 如何從Java應用程序運行批處理文件?
    如何從Java應用程序運行批處理文件?
    在Java Applications中運行批處理文件 解決方案:利用CMD 克服此挑戰的關鍵是使用CMD命令執行批處理文件。這是校正後的Java代碼: runtime.getRuntime()。 exec(“ cmd /c start \'\” build.bat“); 通過添加“ ...
    程式設計 發佈於2025-02-06
  • 如何在Bootstrap 3中凍結第一個表列以增強移動可用性?
    如何在Bootstrap 3中凍結第一個表列以增強移動可用性?
    [2表。為了使桌子在這些設備上響應迅速,Bootstrap提供了“表響應”類。但是,您可能會發現,即使用戶水平滾動,通常包含表標頭的第一列仍保持固定和可見。 實現此目的是通過jQuery and CSS的組合: [2 var $ table = $('。table'); ...
    程式設計 發佈於2025-02-06
  • 為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    網格超過身體,用100%grid-template-columns 問題:考慮以下CSS和HTML: position:fixed ; grid-template-columns:40%60%; grid-gap:5px; 背景: #eee; 當位置未固定時,網格將正確顯示。但是...
    程式設計 發佈於2025-02-06
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    如何為JavaScript對像變量創建動態鍵,嘗試為JavaScript對象創建動態鍵,使用此Syntax jsObj['key' i] = 'example' 1;將不起作用。正確的方法採用方括號:他們維持一個長度屬性,該屬性反映了數字屬性(索引)和一個數字屬性的數量。標準對像沒有模仿這...
    程式設計 發佈於2025-02-06
  • 如何從MySQL中的文本文件執行SQL腳本?
    如何從MySQL中的文本文件執行SQL腳本?
    。 && && && && && home \ home \ sivakumar \ desktop \ test.sql錯誤:無法打開文件'\ home \ sivakumar \ desktop \ test.sql',錯誤:2 : [&& && && &&華術詳細說明:[&...
    程式設計 發佈於2025-02-06
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 // error:“ coss redeclare foo()” 但是,php工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活...
    程式設計 發佈於2025-02-06
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    克服go mod中的模塊路徑差異 coreos/bbolt:github.com/coreos/ [email受保護]:解析go.mod:模塊將其路徑聲明為:go.etcd.io/bbolt `要解決此問題,您可以在go.mod文件中使用替換指令。只需在go.mod的末尾添加以下行:[&& &...
    程式設計 發佈於2025-02-06
  • 如何實施團結延誤進行遊戲和事件測序?
    如何實施團結延誤進行遊戲和事件測序?
    Unity延遲實現詳解 在Unity中創建延遲對於管理遊戲流程、排序事件和模擬真實世界行為至關重要。以下是實現延遲的幾種方法: 1. WaitForSeconds/WaitForSecondsRealtime StartCoroutine: 聲明一個協程函數。 WaitForSeconds: ...
    程式設計 發佈於2025-02-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3