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

Web 2.0 编程思想:16条法则

原文&#xff1a;Thinking in Web 2.0: Sixteen Ways 作者&#xff1a;Dion Hinchcliffe URL:http://sd.csdn.net/n/20060518/90603.html 1、在你开始之前&#xff0c;先定一个简单的目标。无论你是一个Web 2.0应用的创建者还是用户&#xff0c;请清晰的构思你的目标。就像“我…

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

也许有很多使用笔记本电脑的用户&#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…

centos7python命令_02.将python3作为centos7的默认python命令

博客为日常工作学习积累总结&#xff1a;由于个人兴趣爱好对python有了解&#xff1a;1.安装Python3&#xff1a;参考博客&#xff1a;https://zhuanlan.zhihu.com/p/47868341安装依赖包&#xff1a;yum -y install zlib zlib-develyum -y install bzip2 bzip2-develyum -y ins…

SELECT语句“加锁选项”功能说明

阅读全文&#xff1a;http://www.cckan.net/forum.php?modviewthread&tid50 SELECT 语句中“加锁选项”的功能说明SQL Server提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能。用户既能使用SQL Server的缺省设置也可以在select 语句中使用“加锁选项”来实…

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

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

计算机二级链表,计算机二级c语言上机考试——结构体与链表(3页)-原创力文档...

1&#xff1a;某学生的记录由学号、8门课程成绩和平均分组成&#xff0c; 学号和8门课程的成绩已在主函数中给出&#xff0c;请编写函数fun&#xff0c;其功能是&#xff1a;求出该学生的平均分&#xff0c;并放入记录的ave成员中。void fun(STREC *a){int i&#xff1b;a&…

程序员新人怎样在复杂代码中找 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;云原生基金会将微服务容器化作为云…

python与matlab混合编程_python 与 matlab 混编

Matlab的官方文档中介绍了 Matlab 与其余编程语言之间的引擎接口&#xff0c;其中包括对于 Python 开放的引擎 API&#xff0c;可参考官方教程&#xff0c;其中包括引擎安装&#xff0c;基本使用&#xff0c;以及Python与Matlab之间的数据类型转换及交互。 在 Windows 系统中&a…

四川中级职称计算机考试考b级,四川省职称计算机B级考试1卷

一、单选题&#xff1a;(每题一分)1、安装调制调器不需要( )A.选择生产厂商和Modem型号B.Modem连接的端口C.选择所在国家及外拨电话号码D.选择的Modem的尺寸2、在Windows中&#xff0c;窗口还原是指将窗口还原到原来指定的( )A.窗口 B.尺寸C.图标 D.程序3、在Windows中&#xf…

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

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

收藏的RabbitMQ资料,分享给大家

WhyRabbitMQ是实现了高级消息队列协议&#xff08;AMQP&#xff09;的开源消息代理软件&#xff08;亦称面向消息的中间件&#xff09;。RabbitMQ服务器是用Erlang语言编写的&#xff0c;而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的…

网络游戏外挂制作

我一直没有搞懂制作加速外挂是怎么一回事&#xff0c;直到前不久又翻出来了2001年下半期的《程序员合订本》中《“变速齿轮”研究手记》重新回味了一遍&#xff0c;才有了一点点开悟&#xff0c;随后用Delphi重写了一遍&#xff0c;下面我就把我的心得说给大家听听&#xff0c;…

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

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;设在两线路中心线最大…