一个简单的dotnet tool
dotnet tool对应的工具,本质上是一个控制台应用,在调用这个应用时,会根据传入的参数,执行应用内部的逻辑。
关于dotnet tool命令使用,参照https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-tool-install
下面来通过一个简单的demo来看一下tool的开发过程。
首先创建一个.net5的控制台应用程序,并在项目文件中添加PackAsTool,ToolCommandName,PackageOutputPath三个节点配置:
<Project Sdk="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
想要更快更方便的了解相关知识,可以关注微信公众号
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524