本文介绍如何建立和打包 .NET Core 全局工具。 使用 .NET Core CLI,能够建立一个控制台应用程序做为全局工具,便于其余人轻松地安装并运行。 .NET core 全局工具是从 .NET Core CLI 安装的 NuGet 包。 有关全局工具的详细信息,请参阅 .NET Core 全局工具概述。github
本主题适用于:✓ .NET Core SDK 2.1 及更高版本vim
本文使用 .NET Core CLI 建立和管理项目。app
咱们的示例工具是一个能够生成 ASCII 自动程序并打印消息的控制台应用程序。 首先,建立新的 .NET Core 控制台应用程序。编辑器
dotnet new console -o botsay
导航到由先前命令建立的 botsay
目录。工具
使用喜欢的文本编辑器(如 vim
或 Visual Studio Code)打开 Program.cs
文件。测试
将如下 using
指令添加到文件顶部,这有助于缩短代码以显示应用程序的版本信息。spa
using System.Reflection;
接下来,向下移动到 Main
方法。 将方法替换为如下代码,以便处理应用程序的命令行参数。 若是未传递任何参数,将显示简短的帮助消息。 不然,全部这些参数都将转换为字符串并使用自动程序打印。命令行
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 示例。code
static void ShowBot(string message) { string bot = $"\n {message}"; bot += @" __________________ \ \ .... ....' .... .......... .............'..'.. ................'..'..... .......'..........'..'..'.... ........'..........'..'..'..... .'....'..'..........'..'.......'. .'..................'... ...... . ......'......... ..... . _ __ ...... .. # ## ...... .... . ....... ...... ....... ............ ................ ...................... ........................'................ ......................'..'...... ....... .........................'..'..... ....... ........ ..'.............'..'.... .......... ..'..'... ...............'....... .......... ...'...... ...... .......... ...... ....... ........... ....... ........ ...... ....... '...'.'. '.'.'.' .... ....... .....'.. ..'..... .. .......... ..'........ ............ .............. ............. '.............. ...........'.. .'.'............ ............... .'.'............. .............'.. ..'..'........... ............... .'.............. ......... .............. ..... "; Console.WriteLine(bot); }
运行项目并观察输出。 尝试使用命令行的这些变体来查看不一样的结果:
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 全局工具用于安装你的工具的包。
<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 包。
dotnet pack
botsay.1.0.0.nupkg
文件在由 botsay.csproj
文件的 <PackageOutputPath>
XML 值标识的文件夹中建立,在本示例中为 ./nupkg
文件夹。 这样,就能够轻松地安装和测试了。 若是想要公开发布一个工具,请将其上传到 https://www.nuget.org。该工具在 NuGet 上可用后,开发人员就可使用 dotnet tool install 命令的 --global
选项在用户范围内安装该工具。
如今你已有一个包,请经过该包安装工具:
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。
完成工具的试验后,可使用如下命令将其删除:
dotnet tool uninstall -g botsay