看看《System.CommandLine》

記得之前出過幾篇.net tool工具的文章,當時的做法是所有工具的語法分析全部自己解釋,自己執行,語法的解釋占了大部分時間,反而工具的功能被弱化了。

其實微軟有一個CommandLine框架在緩慢的發展著,至今都沒有正式發布,那就是System.CommandLine。可以通過NuGet來引用System.CommandLine,它的github地址是https://github.com/dotnet/command-line-api。它的學習文檔可參考https://docs.microsoft.com/zh-cn/dotnet/standard/commandline/。按照微軟的建議,這個庫還在發展中,有可能有較大的改變,所以不建議生產。但這些不耽誤我們學習理解他的思路。

先看一小段代碼,開始對CommandLine命令的認識

//根命令var rootCommand = new RootCommand("這是一個命令行工具:旦貓");rootCommand.SetHandler(() =>{Console.WriteLine("歡迎使用《旦貓》");});//字命令,可以添加到根命令下面var sub1Command = new Command("show", "顯示一些信息");rootCommand.Add(sub1Command);sub1Command.SetHandler(() =>{Console.WriteLine("這是《旦貓》的show命令");});//開始執行命令await rootCommand.InvokeAsync(args);

可以通過右鍵項目文件,“通過終端打開”,在終端上輸入dotnet run命令來測試自己的命令行工具。

這里有根命令,并設置了命令執行的內容是控制臺上輸出歡迎語。

還有一個子命令show,同樣輸出不同的歡迎語。

如果輸入不存的命令,會有幫助信息。

7947f03df88fa005b1d92039c189e675.png

并且自帶了版本和幫助,幫助是需要自定義的,版本就簡單了,如果項目信息是這樣的

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net7.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable><Version>1.0.0.2</Version></PropertyGroup><ItemGroup><PackageReference Include="System.CommandLine" Version="2.0.0-beta3.22114.1" /></ItemGroup>
</Project>

結果會自動提取版本號過來,為我們節省了這塊一發的時間

53cf51bfb2112a61edcd20511677a40a.png

關于System.CommandLine的介紹,后篇分享。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286692.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286692.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286692.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Sublime Text 3 import Anaconda 無法正常補全模塊名解決辦法

Sublime Text 3 Anaconda配置 在安裝Sublime Text3之后我們總會安裝一些插件&#xff0c;比如Python的Anaconda自動補全插件。但是&#xff0c;裝好之后發現import 時無法像別的IDE里面那樣自動補全模塊名&#xff0c;就像圖中一樣&#xff1a; 解決辦法在Sublime Text的git…

hdu - 2586 How far away ?(最短路共同祖先問題)

題目鏈接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2586 最近公共祖先問題~~LAC離散算法 題目大意&#xff1a;一個村子里有n個房子&#xff0c;這n個房子用n-1條路連接起來&#xff0c;接下了有m次詢問&#xff0c;每次詢問兩個房子a,b之間的距離是多少。 很明顯…

Android之添加固定圖標到桌面

我的QQ群 1 需求 Android之添加固定圖標到桌面 2 部分實現 在AndroidManifest.xml里面添加如下權限 <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /><uses-permission android:name="com.android.launcher.perm…

想做程序員?不同方向入門路線全解

學習計算機編程有很多方向如果你沒有一個正確的路線&#xff0c;那么就會&#xff1a; 就會跟上面所說的那樣&#xff0c;被迫成為一個全棧&#xff0c;這是比較尷尬的。 若你想比較準確的針對某個方向學習&#xff0c;那就繼續往下看吧。 一、程序員分為哪幾個方向 隨著…

【轉】OpenGL超級寶典筆記——紋理映射Mipmap

原文地址 http://my.oschina.net/sweetdark/blog/177812 , 感謝作者&#xff0c;若非法轉載請聯系本人。 目錄[-] MipmappingMipmap過濾構建Mip層Mipmaps 硬件生成LOD&#xff08;多細節層次&#xff09;偏好紋理對象管理多個紋理常駐紋理紋理優先級回顧Mipmapping Mipmap是一個…

【Microstation】第二章:Microstation三維建模基礎知識

本章的主要內容包括模型的顯示樣式(線框、光滑)、三維定位(V、T、S、F)、Microstation常見的坐標系統(世界坐標系、ACS輔助坐標系、精確繪圖坐標系、)和Microstation的工作區域(2D和3D)。 一、顯示樣式 二、三維定位 三維定位在Microstation中顯得尤為重要,常見…

xtrabackup對MySQL數據庫的備份及恢復教程

xtrabackup xtrabackup 是 percona 的一個開源項目&#xff0c;可以熱備份innodb &#xff0c;XtraDB,和MyISAM&#xff08;會鎖表&#xff09;。對MyISAM存儲引擎會鎖表&#xff0c;也是很郁悶的因為線上使用的是Innodb和MyISAM兩種存儲引擎&#xff0c;比較 頭疼&#xff01;…

實現 EF Core 6 自定義查詢標記

前言在《EF Core使用Simple Logging輸出日志》中&#xff0c;我們介紹了查詢標記 TagWith&#xff0c;它可以幫助我們快速定位到需要的日志&#xff1a;而在 .NET 6 中&#xff0c;新增了另外一個查詢標記 TagWithCallSite&#xff0c;它可以標記出代碼的位置&#xff1a;var u…

LeetCode: 14. Longest Common Prefix

Write a function to find the longest common prefix string amongst an array of strings. 大意就是&#xff0c;寫一個函數可以找到一個數組字符串中的最長前綴。 分析&#xff1a; 最長前綴的最大值為數組字符串中長度最短的字符&#xff0c;由最短字符串由后向前遞減可以得…

jQuery選擇器和選取方法

我們已經使用了帶有簡單Css選擇器的jQuery選取函數:$()。現在是時候深入了解jQuery選擇器語法&#xff0c;以及一些提取和擴充選中元素集的方法了。 一、jQuery選擇器 在CSS3選擇器標淮草案定義的選擇器語法中&#xff0c;jQuery支持相當完整的一套子集&#xff0c;同時還添加了…

0運維?微信小程序云開發增刪查改【05】

在創建小程序時&#xff0c;選擇云開發&#xff1a; 隨后進入項目之后&#xff0c;此時整個目錄如下&#xff1a; 此時我們如圖目錄即可找到首頁位置&#xff1a; 接著咱們清除 index.wxml 代碼內容&#xff1a; 在 index.wxml 中加入如下代碼&#xff1a; <view> …

Android之解決卸載app后再次安裝提示room數據庫錯誤

1、問題 目前只有一個google手機之前安裝了app,里面有room寫的數據庫&#xff0c;后面把app卸載了&#xff0c;再次安裝新的app(修改了數據庫里面的字段)&#xff0c;啟動奔潰。 2、分析 提示數據庫錯誤&#xff0c;很明顯就像以前的app里面的數據庫沒有刪除一樣&#xff0c;…

【Microstation】第三章:Microstation三維模型構建與編輯

本章主要講述三維基本實體繪制、三維構造元素繪制、三維模型編輯。 一、三維基本體素繪制 對于立方體、圓柱、球、圓錐等這些基本立體單位,MS提供了專門的繪圖工具。 基本體素繪制有兩種方式: (1)精確繪圖工具 (2&

文件系統管理相關命令

查看文件系統相關屬性的命令&#xff1a;blkidblkid是一個查看磁盤設備屬性相關信息的命令行工具blkid -L LABEL | UUID :根據UUID查看對應的設備是哪個blkid [-ghlv] [-c file] [-w file] [-o format][-s tag] [-t NAMEvalue] device [device ...]-i&#xff1a;顯示io限制lsb…

CSharpFunctionalExtensions -函數式編程C#的功能擴展

簡介該庫有助于以更實用的方式編寫代碼安裝在NuGet上可用dotnet add package CSharpFunctionalExtensions或者PM> Install-Package CSharpFunctionalExtensions例子Maybe創建一個值Maybe<string> apple Maybe<string>.From("apple");// orMaybe<s…

Android之實現夸克瀏覽器書簽和歷史頁面滑動時候右上角圖標切換效果

1 需求 實現夸克瀏覽器書簽和歷史頁面滑動時候右上角圖標切換效果,頁面滑動的時候,圖標也左右滑動,但是只是顯示其中的一個 https://www.captainai.net/st/ 2 代碼實現 xml布局實現 <LinearLayoutandroid:id="@+id/mainLl"android:layout_width="24d…

ArcGIS 10.6字段計算器(Field Calculator)字段任意填充編碼序列(奇數、偶數序列、自定義間隔)

有關ArcGIS 10.x中屬性數據采集和字段計算器(Field Calculator)的文章,需要的讀者可以參照: 《ArcGIS實驗教程——實驗四:數字化屬性數據的采集》,文章中就屬性數據采集的多種方式做了說明,其中就有字段計算器的詳細說明;《【ArcGIS風暴】ArcGIS 10.2字段計算器(Field…

你都用 Python 來做什么?

你們都用python做些什么呢&#xff1f; 在開發中 python 這一個語言就像是小叮當&#xff0c;而 python 的第三方庫則是“百寶箱”&#xff0c;你只要想著對某一個方向進行開發&#xff0c;那么這個“百寶箱”就會給你想要的東西。 由于我是在開發多年后接觸到的 python&#…

DOS分區概述

雖然很多參考文檔對DOS分區進行介紹&#xff0c;但一直沒有一個統一的標準&#xff0c;也沒有統一的命名規則。Microsoft將使用DOS分區體系的磁盤稱為“主引導記錄(Master Boot Recorder---MBR)磁盤”&#xff0c;這是相對于使用“全局ID分區表(GUID Partition Table---GPT)磁盤…

pdf.js 利用HTML5技術顯示pdf內容

Mozilla實驗室最近在github上開源了一款js庫pdf.js&#xff0c;用來讀取PDF文件。 http://mozilla.github.io/pdf.js/ Using base64 encoded PDF HTML頁面內容 <script src"//mozilla.github.io/pdf.js/build/pdf.js"></script><h1>PDF.js Hell…