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. SVG素材整理(原)

      why SVG? 1.矢量的国际图形标准,以后随着浏览器的发展,相信矢量会更多的出现 2.illustartor等多数矢量绘图软件可以导出为这种格式 so SVG现状   基本介绍:http:// ...

  2. ntroducing K-Pattern: A Rapid Way to Make CRUD Operations with Entity Framework

    Download Source Introduction Earlier in the last year I made a different approach to work on Entity ...

  3. JAVA读取控制台的输入【转】

    前面介绍了使用IO类实现文件读写的示例,其实在很多地方还需要使用到IO类,这里再以读取控制台输入为例子来介绍IO类的使用. 控制台(Console)指无图形界面的程序,运行时显示或输入数据的位置,前面 ...

  4. log4net工作原理(2)

    上回说道:Repository可以说成基于一个log4net配置节创建的log4net容器,它根据log4net配置节的指示创建其他所有对象(Logger/Appender/Filter/Layout ...

  5. 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架 - LinFx

    LinFx 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架,遵循领域驱动设计(DDD)规范约束,提供实现事件驱动.事件回溯.响应式等特性的基础设施.让开发者享受到正真意义的面向对象 ...

  6. 【AGC010F】Tree Game 博弈论+暴力

    Description ​ 有一棵nn个节点的树,第ii条边连接ai,biai,bi,每个节点ii上有AiAi个石子,高桥君和青木君将在树上玩游戏 ​ 首先,高桥君会选一个节点并在上面放一个棋子,然后 ...

  7. LAMP课程

    LAMP课程 上次课回顾: ls -a:查看全部目录内容 若文件名以“.”开头,则认为是隐藏的文件. ls-l:可以直接用命令 ll命令:ls -l 的别名. ls -m:横向显示文件和目录 ls - ...

  8. JavaScript学习笔记——3.对象

    JavaScript 对象 - 创建对象 1- var obj = new Object(); 2- var obj = {}; *例子:var person = {Name:"Hack&q ...

  9. promise思考

    我写了三个单元块,分别对应三种业务场景 let query;query = (url) => { url=url||"传递的参数为空"; return new Promise ...

  10. 将0移到最后,在原数组操作,并且不能改变源数据顺序(JS编程)

    一.问题描述: 将0移到最后,在原数组操作,并且不能改变源数据顺序. 示例:输入:[2,0,0,1,0,3],  结果:[2,1,3,0,0,0] 二.问题分析与解决: 注意是在原数组上操作,不要进行 ...