https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&ch=&tn=baiduhome_pg&bar=&wd=2017++Microsoft.DotNet.Watcher&rsv_spt=1&oq=Microsoft.DotNet.Watcher&rsv_pq=b7cd164100061809&rsv_t=e071JCefh5HVvMHUo%2BrBIa6zlXWvS1ZaPEXJ44pHRH5u45vPz8nc4XwPx1nHJ4ATNKL8&rqlang=cn

本文介绍如何创建和打包 .NET Core 全局工具。 使用 .NET Core CLI,可以创建一个控制台应用程序作为全局工具,便于其他人轻松地安装并运行。 .NET core 全局工具是从 .NET Core CLI 安装的 NuGet 包。 有关全局工具的详细信息,请参阅 .NET Core 全局工具概述

本主题适用于:✓ .NET Core SDK 2.1 及更高版本

创建项目

本文使用 .NET Core CLI 创建和管理项目。

我们的示例工具是一个可以生成 ASCII 自动程序并打印消息的控制台应用程序。 首先,创建新的 .NET Core 控制台应用程序。

console复制
dotnet new console -o botsay

导航到由先前命令创建的 botsay 目录。

添加代码

使用喜欢的文本编辑器(如 vim 或 Visual Studio Code)打开 Program.cs 文件。

将以下 using 指令添加到文件顶部,这有助于缩短代码以显示应用程序的版本信息。

C#复制
using System.Reflection;

接下来,向下移动到 Main 方法。 将方法替换为以下代码,以便处理应用程序的命令行参数。 如果未传递任何参数,将显示简短的帮助消息。 否则,所有这些参数都将转换为字符串并使用自动程序打印。

C#复制
static void Main(string[] args)
{
if (args.Length == 0)
{
var versionString = Assembly.GetEntryAssembly()
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()
.InformationalVersion
.ToString(); Console.WriteLine($"botsay v{versionString}");
Console.WriteLine("-------------");
Console.WriteLine("\nUsage:");
Console.WriteLine(" botsay <message>");
return;
} ShowBot(string.Join(' ', args));
}

创建自动程序

接下来,添加一个名为 ShowBot 的新方法,该方法采用一个字符串参数。 此方法将输出消息和 ASCII 自动程序。 ASCII 自动程序代码摘自 dotnetbot 示例。

C#复制
static void ShowBot(string message)
{
string bot = $"\n {message}";
bot += @"
__________________
\
\
....
....'
....
..........
.............'..'..
................'..'.....
.......'..........'..'..'....
........'..........'..'..'.....
.'....'..'..........'..'.......'.
.'..................'... ......
. ......'......... .....
. _ __ ......
.. # ## ......
.... . .......
...... ....... ............
................ ......................
........................'................
......................'..'...... .......
.........................'..'..... .......
........ ..'.............'..'.... ..........
..'..'... ...............'....... ..........
...'...... ...... .......... ...... .......
........... ....... ........ ......
....... '...'.'. '.'.'.' ....
....... .....'.. ..'.....
.. .......... ..'........
............ ..............
............. '..............
...........'.. .'.'............
............... .'.'.............
.............'.. ..'..'...........
............... .'..............
......... ..............
.....
";
Console.WriteLine(bot);
}

测试工具

运行项目并观察输出。 尝试使用命令行的这些变体来查看不同的结果:

C#复制
dotnet run
dotnet run -- "Hello from the bot"
dotnet run -- hello from the bot

位于 -- 分隔符后的所有参数均会传递给应用程序。

安装全局工具

在将应用程序作为全局工具打包并分发之前,你需要修改项目文件。 打开 botsay.csproj 文件,并向 <Project><PropertyGroup> 节点添加三个新的 XML 节点:

  • <PackAsTool>
    [必需] 表示将打包应用程序以作为全局工具进行安装。

  • <ToolCommandName>
    [可选] 工具的替代名称,否则工具的命令名称将以项目文件命名。 一个包中可以有多个工具,选择一个唯一且友好的名称有助于与同一包中的其他工具区别开来。

  • <PackageOutputPath>
    [可选] 将生成 NuGet 包的位置。 NuGet 包是.NET Core CLI 全局工具用于安装你的工具的包。

XML复制
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework> <PackAsTool>true</PackAsTool>
<ToolCommandName>botsay</ToolCommandName>
<PackageOutputPath>./nupkg</PackageOutputPath> </PropertyGroup> </Project>

虽然 <PackageOutputPath> 不是必选的,请在本示例中使用它。 请务必将其设置为:<PackageOutputPath>./nupkg</PackageOutputPath>

接下来,创建应用程序的 NuGet 包。

console复制
dotnet pack

botsay.1.0.0.nupkg 文件在由 botsay.csproj 文件的 <PackageOutputPath> XML 值标识的文件夹中创建,在本示例中为 ./nupkg 文件夹。 这样,就可以轻松地安装和测试了。 如果想要公开发布一个工具,请将其上传到 https://www.nuget.org。该工具在 NuGet 上可用后,开发人员就可以使用 dotnet tool install 命令的 --global 选项在用户范围内安装该工具。

现在你已有一个包,请通过该包安装工具:

console复制
dotnet tool install --global --add-source ./nupkg botsay

--add-source 参数指示 .NET Core CLI 临时使用 ./nupkg 文件夹(我们的 <PackageOutputPath> 文件夹)作为 NuGet 包的附加源数据源。 有关安装全局工具的详细信息,请参阅 .NET Core 全局工具概述

如果安装成功,会出现一条消息,显示用于调用工具的命令以及所安装的版本,类似于以下示例:

复制
You can invoke the tool using the following command: botsay
Tool 'botsay' (version '1.0.0') was successfully installed.

现在应能够键入 botsay,并获得来自工具的响应。

备注

如果安装已成功,但无法使用 botsay 命令,可能需要打开新的终端来刷新 PATH。

删除工具

完成工具的试验后,可以使用以下命令将其删除:

console复制
dotnet tool uninstall -g botsay

使用 .NET Core CLI 创建 .NET Core 全局工具的更多相关文章

  1. ASP.NET Core:创建一个Core项目

    ylbtech-ASP.NET Core:创建一个Core项目 1.返回顶部 1. 2. 3. 4.         5. 2.返回顶部 1.新建Razor页面 2. 3. 4.Abc 4.1.Abc ...

  2. .net core CLI(创建VueJS||Angular结合的项目)

    net core cli 是快速创建模板项目 安装CLI 参考: https://www.hanselman.com/blog/dotnetNewAngularAndDotnetNewReact.as ...

  3. .NET: 使用.NET Core CLI开发应用程序

    要开发.NET Core应用程序,除了使用强大的Visual Studio之外,还可以使用.NET Core CLI..NET Core CLI (Command-Line Interface),也就 ...

  4. 使用.Net Core CLI命令dotnet new创建自定义模板

    文章起源来自一篇博客:使用 .NET CORE 创建 项目模板,模板项目,Template - DeepThought - 博客园 之前使用Abp的时候就很认同Abp创建模板项目的方式.想不到.Net ...

  5. 如何为 .NET Core CLI 启用 TAB 自动补全功能

    如何为 .NET Core CLI 启用 TAB 自动补全功能 Intro 在 Linux 下经常可以发现有些目录/文件名,以及有些工具可以命令输入几个字母之后按 TAB 自动补全,最近发现其实 do ...

  6. .NET Core CLI 的性能诊断工具介绍

    前言 开发人员的.NET Core项目上线后,经常会出现各种问题,内存泄漏,CPU 100%,处理时间长等, 这个时候就需要快速并准确的发现问题,并解决问题, 除了项目本身的日志记录外,NET Cor ...

  7. 如果没有Visual Studio 2015,我们如何创建.NET Core项目 ?

    对于.NET开发人员来说,我们已经习惯了VS这个世界上最强大的IDE,所以对他们来说,项目的创建直接利用安装到VS中相应的项目模板即可.当.NET Core跨出了Windows的围栏,正式拥抱其他平台 ...

  8. ASP.NET Core 中文文档 第二章 指南(2)用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API

    原文:Building Your First Web API with ASP.NET Core MVC and Visual Studio 作者:Mike Wasson 和 Rick Anderso ...

  9. 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI)

    说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Command Line Tools 翻译:.NET Core命令行工具 什么是 .NET Core ...

随机推荐

  1. TP5多入口设置

    今天在用tp5做项目的时候发现,前台是可以绑定默认到index模块的,但是后台不好弄,于是查了一下手册,按照手册上说的,复制了index.php改为admin.php,作为后台的入口文件,于是域名/a ...

  2. linq to sql 实现左(右)连接,那个方法是对的,该怎么处理

    linq to sql 实现左(右)连接,那个方法是对的var query2 = from tb0 in db.table_0  join tb1 in db.table_1 on table_0.关 ...

  3. 关于jeecms修改首页进行测试

    由于要学习,jeecms的标签使用,那么必须要有一个测试页.关于首页如何使之用之当测试页. 修改的步骤,找到web.xml文件修改 <welcome-file-list> <welc ...

  4. SharePoint 2013备份方法整理

    关于SharePoint备份 SharePoint的备份是一个数据副本,主要用于在系统出现故障后还原和恢复该数据. 备份的工具主要有以下几种(写的不全,欢迎补充.) SharePoint管理中心的备份 ...

  5. .net core Task.Result Wait等造成502

    这两天公众号项目上线,刚开始项目运行没什么问题,但几天之后,访问量激增,服务器崩溃了,每次请求都返回502,一脸懵逼,无从下手,赶紧开日志里的BUG,拿出来一个个改,BUG都改完之后,没有明显的效果, ...

  6. 「BZOJ 2342」「SHOI 2011」双倍回文「Manacher」

    题意 记\(s_R\)为\(s\)翻转后的串,求一个串最长的形如\(ss_Rss_R\)的子串长度 题解 这有一个复杂度明显\(O(n)\)的做法,思路来自网上某篇博客 一个双倍回文串肯定当且仅当本身 ...

  7. linux下vim python代码自动补全

    一.vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.p ...

  8. k8s(未完待续)

    K8s简介Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展. 使用Kubernetes可以  自动化容器的部署和复制  随时扩展或收缩容器规模  将容器 ...

  9. CentOS6 系统下升级python后yum命令使用时报错

    CentOS6 系统下升级python后yum命令使用时报错,如下: [root@xxxxxxx]#yumFile"/usr/bin/yum",line30exceptKeyboa ...

  10. numpy常用功能总结、python格式化输入输出

    #coding:utf-8 #author:徐卜灵 ##################### #由于在各大公司笔试的时候总是会遇到一些格式化输入输出数据,今天就来总结一下. #结合numpy来处理数 ...