一個簡單的dotnet tool
阿新 • • 發佈:2021-02-13
dotnet tool對應的工具,本質上是一個控制檯應用,在呼叫這個應用時,會根據傳入的引數,執行應用內部的邏輯。
關於dotnet tool命令使用,參照https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-tool-install
下面來通過一個簡單的demo來看一下tool的開發過程。
首先建立一個.net5的控制檯應用程式,並在專案檔案中新增PackAsTool,ToolCommandName,PackageOutputPath三個節點配置:
<ProjectSdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> <Version>0.0.1</Version> <PackAsTool>true</PackAsTool> <ToolCommandName>csrebot</ToolCommandName> <PackageOutputPath>./nupkg</PackageOutputPath> </PropertyGroup> </Project>
控制檯專案正常開發,下面程式碼只是做了個數據展示的功能:
using System; using System.Collections.Generic; using System.Reflection; namespace CSRebot { class Program { static void Main(string[] args) { if (args.Length == 0) { _infoDic["--info"](); return; } else { Run(args); } } static Dictionary<string, Action> _infoDic = new Dictionary<string, Action> { { "--info", ()=>Console.WriteLine( @$" CSRebot v{Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion.ToString()} ---------------------------------------------- Description: 為更好的使用C#提供幫助。 Usage: csrebot[options] ---------------------------------------------- ") }, {"-h",()=>Console.WriteLine(@$" Version {Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion.ToString()} 使用情況: csrebot [options] [command] [command-options] [arguments] ") }, { "-h=today",()=>{ switch((int)DateTime.Now.DayOfWeek) { case 0: Console.ForegroundColor=ConsoleColor.Red; break; case 6: Console.ForegroundColor=ConsoleColor.Green; break; } Console.WriteLine(@$"今天是{DateTime.Now.ToString("yyyy年MM月dd日")},{(DayOfChineseWeek)(int)DateTime.Now.DayOfWeek}"); Console.ResetColor(); } } }; static void Run(string[] args) { if (_infoDic.ContainsKey(args[0])) { _infoDic[args[0]](); } } } public enum DayOfChineseWeek { 星期日 = 0, 星期一 = 1, 星期二 = 2, 星期三 = 3, 星期四 = 4, 星期五 = 5, 星期六 = 6 } }
完成後,選中專案並打包,然後進入專案所有的資料夾執行工具安裝命令
dotnet tool install -g --add-source ./nupkg CSRebot
命令列會返回
可使用以下命令呼叫工具: csrebot
已成功安裝工具“csrebot”(版本“0.0.1”)。
說明csrebot這個工具安裝成功,現在可以用這個工具執行一下,看看輸出結果了
csrebot -h=today
今天是2021年02月07日,星期日
這裡是開發階段,我們沒有把這個工具釋出出來,也不建把非成品釋出到nuget.org上,避免拉低nuget.org質量
如果工具程式碼更新了,要重新解除安裝這個工具,重灌安裝才可能,這個很好理解,就是刪除原來的應用,重新引用新應用,功能就會得到更新。
dotnet tool uninstall -g CSRebot