日韩性视频-久久久蜜桃-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快速开发一个较正规的命令行应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 国产亚洲AV无码成人网站在线 | 天天弄天天操 | 朝鲜女人性猛交 | 黑丝av在线 | 99久久精品无码一区二区毛片 | 妖精视频一区二区 | 播放灌醉水嫩大学生国内精品 | 中文永久免费观看 | 六十路息与子猛烈交尾 | 少妇在军营h文高辣 | 国产福利在线观看 | 日韩有码第一页 | 欧美色99| 美女激情网站 | 中文在线永久免费观看 | 欧美亚韩一区二区三区 | 三级4级全黄60分钟 成人自拍视频 | 四虎成人在线 | 精品人妻av一区二区三区 | 美女大bxxxxn内射 | 看毛片看毛片 | 亚洲国产精品区 | 国产卡一卡二卡三 | 欧美性受xxxx黑人猛交88 | 中文av字幕 | 韩国av在线播放 | 丝袜黄色片 | 成人免费视频网站 | av一二区 | 国产又黄又猛又粗又爽 | 国产欧美激情 | 在线免费观看麻豆 | 国产第一毛片 | 96看片| 你懂的在线播放 | 国产chinesehd天美传媒 | 六月激情综合 | 91影音| 欧美黑人粗大 | 久久久久国色av免费观看性色 | 高清一区在线观看 | 欧美bbw视频 | 女同性αv亚洲女同志 | 综合色爱 | 国产偷拍一区二区 | 国产成人三级在线观看 | 中文在线一区二区 | 综合网色 | 精品免费国产一区二区三区 | 亚洲精选中文字幕 | 女人的黄色片 | 69影院少妇在线观看 | 91禁国产网站 | 成人综合激情网 | 人人妻人人澡人人爽人人精品 | 激情内射亚洲一区二区三区爱妻 | 在线观看视频免费 | 福利资源在线 | 四虎影视av | 亚洲精品国产无码 | 国产理论一区 | 国产精品网友自拍 | 国产又粗又猛又黄又爽视频 | 神马午夜一区二区 | 欧美精品久久久久久久多人混战 | 精品在线视频免费观看 | 在线观看成人网 | 亚洲热视频 | 精品无码三级在线观看视频 | 人人超碰在线 | 超碰人人草人人干 | 亚洲天堂不卡 | 色在线视频观看 | 强行挺进白丝老师里呻吟 | 久久久久久国产精品免费播放 | 全部孕妇毛片 | 日本视频网站在线观看 | 懂色一区二区 | 男生裸体视频 | 日本特级毛片 | av激情在线观看 | 欧美精品一区二区三区久久久竹菊 | 久夜精品 | 女同另类之国产女同 | 少妇1~3伦理 | 免费一二三区 | 天天艹日日艹 | 国产污视频网站 | 伦理片久久 | 亚欧美一区二区三区 | 中文字幕女同 | 爱操在线 | 亚洲精品福利在线 | 天天夜夜爽| 精品无码久久久久久国产 | 亚洲国产91| 最新黄色网页 | 成人人人人人欧美片做爰 | 日韩欧美一区二区视频 |