一个简单的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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值