一个简单的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内存和显存_【硬件资讯】显存再升级?Nvidia新卡实锤GDDR6X!显存大升级能否带来性能提升??...

新闻1&#xff1a;美光泄密 RTX 3090显卡用上GDDR6X显存&#xff1a;带宽堪比HBM2NVIDIA新一代显卡越来越近了&#xff0c;8月31日就有可能公布重大消息&#xff0c;安培GPU核心的RTX 30系列最快下个月就能买到。首发的第一波肯定是高端卡&#xff0c;除了RTX 3080、RTX 3080 T…

神舟笔记本电源管理软件_笔记本电脑长期不用充不上电了?原来问题就出在这儿...

也许有很多使用笔记本电脑的用户&#xff0c;都会遇到这样一种情况&#xff1a;笔记本电脑长期没有使用&#xff0c;导致电池充不了电的现象。遇到这样一种情况该如何进行解决呢&#xff1f;这确实有点难倒很多用户了&#xff0c;难道电池坏了&#xff0c;需要重新更换新的笔记…

浅析PageRank算法

机器学习很早就对Google的PageRank算法很感兴趣&#xff0c;但一直没有深究&#xff0c;只有个轮廓性的概念。前几天趁团队outing的机会&#xff0c;在动车上看了一些相关的资料&#xff08;PS&#xff1a;在动车上看看书真是一种享受&#xff09;&#xff0c;趁热打铁&#xf…

小学计算机课教学设计,小学信息技术教学设计三篇

【导语】教案是教师为顺利而有效地开展教学活动&#xff0c;根据课程标准&#xff0c;教学大纲和教科书要求及学生的实际情况&#xff0c;以课时或课题为单位&#xff0c;对教学内容、教学步骤、教学方法等进行的具体设计和安排的一种实用性教学文书。无忧考网准备了以下内容&a…

Happy 牛 Year!牛年dotnet云原生技术趋势

首先给大家拜个年&#xff0c;祝大家&#xff1a;新年快乐&#xff0c;牛年大吉&#xff0c;牛转乾坤&#xff0c;一往无前&#xff01;2020年的春节&#xff0c;新冠疫情使得全球业务停滞不前&#xff0c;那时候&#xff0c;没有人知道会发生什么&#xff0c;因此会议被取消&a…

windows传真和扫描由于不能访问您的文档_扫描识别工具Dynamic Web TWAIN全年最低价来了!错过再等一年...

Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码&#xff0c;就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。然后用户可以编辑图像并将图像保存为多种格式&#xff0c;用户可保存图像到远程数据库或者ShareP…

程序员新人怎样在复杂代码中找 bug?

我曾经做了两年大型软件的维护工作&#xff0c;那个项目有 10 多年了&#xff0c;大约 3000 万行以上的代码&#xff0c;参与过开发的有数千人&#xff0c;代码 checkout 出来有大约 5 个 GB&#xff0c;而且 bug 特别多&#xff0c;open 的有上千&#xff0c;即使最高优先级的…

谈到云原生, 绕不开容器化

传送门什么是云原生&#xff1f;云原生设计理念.NET微服务Containers现在谈到云原生&#xff0c; 绕不开“容器”。在《Cloud Native Patterns》一书中&#xff0c;作者Cornelia Davis指出&#xff1a;“容器是云原生应用的基石”&#xff1b;云原生基金会将微服务容器化作为云…

如果有人问你什么是大数据?不妨说说这10个典型的大数据案例

在听Gartner的分析师Doug Laney用55分钟讲述55个大数据应用案例之前&#xff0c;你可能对于大数据是否落地还心存疑虑。Laney的演讲如同莎士比亚的全集一样&#xff0c;不过可能“缺乏娱乐性而更具信息量”&#xff08;也许对于技术人员来说是这样的&#xff09;。 这个演讲是对…

各高校寒假时间公布_高校放假哪家长?多所高校寒假时间公布!

11月25日2021年放假安排公布大家发现2020年已经接近尾声对于学生族来说考试近了寒假也快到了快来看看高校放假哪家长&#xff1f; (如有调整变动&#xff0c;以各高校最新通知为准)山东大学1月11日开始放假到2月28日结束寒假一共49天山东师范大学1月31日开始放假到3月6日结束寒…

ASP.NET Core 对Controller进行单元测试

单元测试对我们的代码质量非常重要。很多同学都会对业务逻辑或者工具方法写测试用例&#xff0c;但是往往忽略了对Controller层写单元测试。我所在的公司没见过一个对Controller写过测试的。今天来演示下如果对Controller进行单元测试。以下内容默认您对单元测试有所了解&#…

12对胸椎对应体表标志_铁路信号之信号表示器及标志(三)

信 号 标 志1.信号标志&#xff0c;设在列车运行方向左侧&#xff08;警冲标除外&#xff09;。双线区段的轨道电路调谐区标志设在线路外侧。&#xff08;1&#xff09;警冲标&#xff1a;设在两会合线路线间距离为4 m的中间。线间距离不足4m时&#xff0c;设在两线路中心线最大…

python 画树 递归_python递归函数绘制分形树的方法

分形几何学的基本思想&#xff1a;客观事物具有自相似性的层次结构&#xff0c;局部和整体在形态&#xff0c;功能&#xff0c;信息&#xff0c;时间&#xff0c;空间等方面具有统计意义上的相似性&#xff0c;称为自相似性&#xff0c;自相似性是指局部是整体成比例缩小的性质…

mui 时间样式错乱_微信编辑器样式排版错位怎么回事?

有小伙伴反映在使用365编辑器时遇到素材样式无法正常使用的情况&#xff0c;出现排版错乱的情况&#xff0c;今天猫头鹰针对这个问题写了一篇避坑指南&#xff0c;或许能帮到小伙伴们~365微信编辑器样式排版错位怎么回事&#xff1f;这种情况的发生其实是排版过程中的错误操作导…

海德汉编程详细手册_UG编程海德汉系统螺旋铣孔最后一刀欠切解决方案

&#xfeff; 提示&#xff1a;点击上方"NX网"↑ 免费订阅 关注老叶今天给大家分享一个海德汉螺旋铣孔最后一圈不加工&#xff1a;新建一个模型&#xff0c;只要是深度不能整除螺距&#xff0c;都会存在这样的问题OK 新建一个默认后处理用来测试最后一圈确实存在问题…

逝者如斯,且听我胡说八道

【导读】嗯、转瞬即逝&#xff0c;还未来得及转身&#xff0c;2020就又这么溜了&#xff0c;溜了&#xff0c;趁其弥留之际&#xff0c;通过小作坊对2020年做个基本总结当我决心要写一篇总结时&#xff0c;我发现我要完了&#xff0c;这可不是一两个小时就能搞定的事情&#xf…

汇总:2017 年 IT 界最严重的裁员事件

裁员年年都有&#xff0c;今年特别多从微软、Oracle、IBM&#xff0c;到思科、HPE&#xff0c;再到雅虎、stackoverflow&#xff0c;无论是处于转型变革中的老牌巨头&#xff0c;还是日渐成熟的创新型公司&#xff0c;在动荡的科技行业&#xff0c;裁员风波一浪高过一浪&#x…

2020 年终总结:变化 积累

这是「进击的Coder」的第 32 篇个人随想作者&#xff1a;崔庆才之前写年终总结都是在每年正月&#xff0c;今年也不例外了。2020 年&#xff0c;对每个人来说都是特殊的一年&#xff0c;突入其来的新冠疫情给大家的生活带来了很大的变化&#xff0c;尤其上班年困难的时候&#…

11尺寸长宽 iphone_新手必知LED显示屏尺寸规格及计算方法

前言&#xff1a;LED屏幕在生活中&#xff0c;随处可见&#xff0c;显示屏、广播屏等等&#xff0c;但是LED尺寸怎么计算的&#xff0c;你知道吗&#xff1f;今天我们一起了解一下LED屏幕尺寸的计算方法。一、点间距的计算1、各单元板常见型号及尺寸LED屏普遍是用单元板做的。L…