日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

使用.NET Core快速开发一个较正规的命令行应用程序

發(fā)布時間:2025/3/21 asp.net 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用.NET Core快速开发一个较正规的命令行应用程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

程序員的世界,命令行工具一直是“體驗非常友好”的工具,也能自動化完成很多事情,同時還能結合shell來進行某項任務的批處理(腳本)。在.NET Core中,命令行應用程序是基礎,但是如何實現(xiàn)像 “cat” 這種功能呢?今天就為大家介紹一個packages來優(yōu)雅的實現(xiàn)一個命令行應用程序。

一般命令行程序包含什么?

  • 使用方式
  • 幫助信息
  • 子命令
  • 參數(shù)
  • 選項
  • 幫助信息

    幫助信息如上,介紹了命令的作用和參數(shù)、選項作用。

    這個是必不可少的。

    子命令

    一個應用程序打包了多個功能,這時候就可以使用子命令,比如 dotnet ef migrations,這時候 migrations 就是子命令,可以看做本來可以拆分成多個可執(zhí)行程序的東西,用一個可執(zhí)行程序來打包完成,子命令可以再次具有自己的幫助、參數(shù)和選項。

    參數(shù)

    參數(shù)在形式上有點類似子命令,比如 cat hello.txt 這邊的hello.txt就是一個參數(shù),參數(shù)一般是命令中必須存在的內容。比如 cat 命令,沒有輸入路徑則沒法執(zhí)行任何任務。

    選項

    選項是指可選項,用來擴展命令。比如刪除時是否需要輸出被刪除的文件?是否刪除文件夾?是否遞歸刪除?等等。

    如何用.NET Core快速開發(fā)一個命令行程序?

    CommandLineUtils Packages

    今天的主角,這邊包主要就是用來做命令行程序的。

    說起這個包的歷史,還是比較曲折的。

    這個包原是aspnet團隊提供的,開源項目在

    https://github.com/aspnet/Common

    但是大家可以發(fā)現(xiàn)在現(xiàn)在的倉庫的src中已經沒有了 CommandLineUtils 這個項目。

    翻看歷史我們可以發(fā)現(xiàn) Microsoft.Extensions.CommandLineUtils 這個項目

    https://github.com/aspnet/Common/tree/rel/1.1.1/src/Microsoft.Extensions.CommandLineUtils

    同時nuget上還是有這個packages的。

    https://www.nuget.org/packages/Microsoft.Extensions.CommandLineUtils/

    由于這個項目是滿足內需的(ef migrations,等命令)所以MS并不打算長期發(fā)展這個項目。所以MS推薦社區(qū)來維護一個類似的項目。

    那么就有很多熱心的人開始接力的

    https://github.com/natemcmaster/CommandLineUtils(MS官方鏈接)

    這個庫在基礎功能上還增加了

  • Attribute API(用Attribute來簡化編寫)
  • ArgumentEscaper(參數(shù)轉義)
  • Prompt(獲得輸入相關的幫助,用戶輸入 yes or no,獲取一串輸入密碼)
  • DotNetExe(得到dotnet.exe的路徑)
  • 實現(xiàn)一個簡單的cat命令

    好了我們介紹了一般命令行程序的構成,下面我們來用.NETCore來實現(xiàn)一個簡化版的cat命令。

    new CommandLineApplication

    Name:命令名稱

    Description:命令描述

    app.HelpOption("-h|--help")

    設置含有幫助選項,觸發(fā)方式為 –h 或者 —help,這邊用 | 分隔。

    app.Argument("path", "file")

    設置一個參數(shù),參數(shù)名為 path,描述為file。還可以設置參數(shù)是否允許多個等。

    app.Option

    設置了兩個選項,選項的觸發(fā)方式與HelpOption一致,后面一個參數(shù)是說明。還可以配置這個參數(shù)是否有值(是否只是開關),是否只有一個值,是否允許多個值等。

    app.OnExecute

    命令的具體執(zhí)行邏輯。

    app.Execute

    與主程序對接,真正的執(zhí)行者。

    邏輯1,參數(shù)驗證與轉換

    邏輯2,具體的輸出

    發(fā)布、測試

    使用自宿主的方式發(fā)布一個win-x64的應用。

    具體的發(fā)布方式可以看官網文檔

    https://docs.microsoft.com/zh-cn/dotnet/core/deploying/

    寫在最后

    我們來瞅一瞅發(fā)布后的文件夾

    是不是太夸張,其實這種簡單的程序,我們可以這樣子

    這個我們就留著后面介紹吧,有興趣的可以先去了解下“CoreRT”

    https://github.com/dotnet/corert

    .NET Core的AOT項目,目前還是alpha版。

    總結

    以上是生活随笔為你收集整理的使用.NET Core快速开发一个较正规的命令行应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲欧美激情另类校园 | 视频在线观看一区二区三区 | 亚洲欧美精品午睡沙发 | 国产亚洲二区 | 午夜视频在线免费观看 | 国产一级视频 | 国外成人性视频免费 | 特级西西www444人体聚色 | 人妻无码一区二区三区 | 中文字幕在线视频不卡 | 超碰碰97 | 北条麻妃一区二区三区免费 | 三级黄色网 | 亚洲一区二区高清 | 丁香花五月天 | 国产91精品高潮白浆喷水 | 亚洲v欧美v| 久久亚洲成人 | 欧美性福利 | 国产日韩精品一区二区三区 | 亚洲欧洲中文 | 夜久久| 国产精品高潮呻吟久久aⅴ码 | 吸咬奶头狂揉60分钟视频 | 91精品视频国产 | 超碰97人人在线 | 日韩一区久久 | 饥渴的少妇和男按摩师 | 国产精品久久久久久久久久久久久久 | youjizz中国少妇 | 欧美性猛交xxxxx水多 | 欧美老熟妇一区二区 | www.日 | 国产精品毛片一区二区三区 | xxxxxx欧美 | 五月开心网 | 亚洲九区 | 国产欧美一区二区三区在线看蜜臀 | 日韩精品字幕 | 国产无码精品视频 | 精品999久久久一级毛片 | 色五丁香 | 3d动漫精品啪啪一区二区竹菊 | a级片一区二区 | 成人理论片 | 久久色av | 黄色在线视频网址 | 亚洲精品麻豆 | 嫩草伊人久久精品少妇av | 熟女少妇a性色生活片毛片 亚洲伊人成人网 | 国产在线一区二区视频 | 欧美黑人啪啪 | 久热精品在线 | 久久综合亚洲精品 | 99久久人妻无码精品系列 | 国产一区二区三区在线免费观看 | 欧美乱论 | 国内性爱视频 | 欧美一区二区三区四区在线观看 | 亚洲成人伦理 | 久久99免费视频 | 国产午夜电影在线观看 | 日本黄色免费观看 | 日韩夫妻性生活 | xxx久久 | 天天玩天天干 | 日韩国产成人 | 极品少妇在线观看 | 在线中文字幕网站 | 国产a级大片 | 二级毛片| 亚洲午夜无码久久久久 | 91欧美在线 | av不卡在线观看 | 韩日精品中文字幕 | 久久性精品 | 超碰在线进入 | 天堂在线视频网站 | 亚洲一区免费 | 福利视频在线播放 | 青娱乐91| 一级黄色片看看 | 久久久久人妻一区二区三区 | 巨胸喷奶水www久久久免费动漫 | 日韩免费福利视频 | 特级西西444www高清大胆 | 国产一区二区三区在线看 | 午夜天堂视频 | 欧美高清a | 综合网五月天 | 国产在线日韩 | 日韩精品一二三四区 | 日本国产一级片 | 99免费精品视频 | 国产精品sm调教免费专区 | 永久精品 | 好吊妞视频在线观看 | av三级网站 | 青青青国内视频在线观看软件 |