如何编写.NET Core Global Tools (附两个案例)

简介: .NET Core 2.1 为我们带来了一个新的特性:.NET Core Global Tools。用过NodeJs的人一定对NPM不会陌生,它就是受到NPM的启发,为提供了.NET Core tools 提供了一个新的部署和扩展机制 。

一.什么是 .NET Core Global Tools

2018年5月31日(北京时间)微软发布了 .NET Core 2.1 正式版,.NET Core 2.1 为我们带来了一个新的特性:.NET Core Global Tools。用过NodeJs的人一定对NPM不会陌生,它就是受到NPM的启发,为提供了.NET Core tools 提供了一个新的部署和扩展机制 。它是一个 .NET Core 控制台应用程序,它们是作为 NuGet 包来打包和获取的。默认情况下,这些 tools 是依赖于框架的应用程序 ,并包含其所有的 NuGet 依赖项。这意味着 .NET Core tools 默认运行在所有支持 .NET Core 的操作系统和芯片架构上,并带有一组二进制文件。默认情况下,dotnet tool install 命令会在 NuGet.org 上查找 tools 。您也可以改用您自己的 NuGet 源。

二.使用

请确保你的.NET Core SDK升级到2.1(版本号2.1.300),若没有请访问官网进行安装:https://www.microsoft.com/net/learn/get-started/windows

我们主要使用 dotnet tool 命令来进行操作:

使用情况: dotnet tool [选项] [命令]

选项:
  -h, --help   显示帮助信息。

命令:
  install <PACKAGE_ID>     安装在命令行上使用的工具。
  uninstall <PACKAGE_ID>   卸载工具。
  update <PACKAGE_ID>      将工具更新为最新稳定版本以供使用。
  list                     列出当前开发环境中的已安装工具。

1.命令使用:

(1).安装tool dotnet tool install -g <工具ID>

(2).卸载tool dotnet tool uninstall -g <工具ID>

(3).更新tool dotnet tool update -g <工具ID>

(4).列出本地已安装tool dotnet tool list -g

2.安装第一个tool

官方为我们提供了一个tool示例 dotnetsay,我们通过命令进行安装:

dotnet tool install -g dotnetsay

image

然后我们执行命令使用该工具

dotnetsay

它为我我们输出了一个机器人:

image

你可以访问 dotnetsay 的源码来学习如何编写 tool。

三.编写第一个.NET Core Global Tool

1.新建一个.NET Core 控制台程序

image

2.编写代码

我们编写一句代码,输出 “Hello .NET Core Global Tools”。

using System;

namespace HelloDotnetCoreTool
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello .NET Core Global Tools");
        }
    }
}

3.编辑csproj文件

选中项目->右键菜单->编辑csproj文件,在 PropertyGroup节点下加入:

<PackAsTool>true</PackAsTool>

完整示例:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <PackAsTool>true</PackAsTool>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

</Project>

4.编辑Nuget包信息

选中项目->右键菜单->属性->Package,编辑我们的包信息。

image

5.打包

我们可以使用 dotnet pack 命令来进行打包,也可以使用VS提供的菜单来进行打包:选中项目->右键菜单->打包 (项目配置选为 Release),然后在 bin\Release目录下,就可以找到我们打包的nuget包。

image

6.安装

打开命令提示符(cmd),进入到nuget包所在目录,执行命令进行安装:

dotnet tool install -g HelloDotnetCoreTool --add-source ./

出现如下提示表示安装成功:

image

然后我们使用list命令来进行查询已安装的工具列表:

dotnet tool list -g

image

可以看到,我们编写的工具已经安装成功了。

7.使用

我们在命令提示符(cmd)中使用命令 hellodotnetcoretool,可以输出我们刚刚编写的 “Hello .NET Core Global Tools”

1527945020318

四.发布到 nuget.org

我们可以将我们编写的工具发布到 nuget.org ,那么任何人都可以通过命令安装、使用我们的工具了。

使用浏览器访问:http://www.nuget.org/ ,然后注册账户进行登录。

我们选择右上角的菜单 “Upload Packages”

选择我们刚刚打包的文件进行上传就可以了:

image

上传以后,需要等待10分钟左右,nuget.org 会对你的包来进行验证,这个时候你是无法通过命令来安装你的工具的,只有验证通过了才行。然后再等20分钟左右,nuget.org 便会对你的工具进行索引,这个时候就能过通过搜索来访问你的工具了。

五.案例

我编写了两个实用的 .NET Core Global Tool ,在这里为大家做一下简单的介绍

1.DotnetRSA

它是一个生成RSA加密算法所需的秘钥的工具,支持生成xml、pkcs1、pkcs8三种格式,并且支持三种格式之间进行相互转换。它是一个正规的命令行应用程序。你可以使用命令来进行安装:

dotnet tool install -g dotnetrsa

详细介绍:https://yq.aliyun.com/articles/599207
项目地址:https://github.com/stulzq/dotnetrsa

简单演示,生成一个 xml 格式,长度为2048的RSA秘钥

dotnetrsa gen -f xml -s 2048 -o d:\

image

生成的秘钥:

image

image

2.dotnet-cnblog

前面我写了一篇文章 《如何高效的编写与同步博客 (.NET Core 小工具实现)》,在里面我介绍了一个使用 .NET Core 实现的可以快速解析Markdown文件里的本地图片,并上传到博客园,同事进行内容转换然后保存到新的文件里,可以让你的博客快速的发布在博客园,不需要手动对每张图片进行上传,是一个十分方便快捷使用的小工具,现在我将它改造成了 .NET Core Global Tool,你可以使用命令来进行安装:

dotnet tool install -g dotnet-cnblog

使用方法为:

dotnet-cnblog <Markdown文件路径>

使用演示:

668104_20180602213940783_1752425790

详细介绍以及项目地址请访问:https://github.com/stulzq/CnBlogPublishTool

六.其他工具

由 natemcmaster 维护了一个工具列表,请访问 https://github.com/natemcmaster/dotnet-tools 进行查看,我编写的dotnetrsa工具已加入此列表。

image

七.参考资料

相关文章
|
1月前
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:&lt;https://github.com/khellang/Scrutor&gt;
48 5
|
3月前
|
存储 开发框架 JSON
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
105 0
|
2月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
52 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
1月前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
34 3
|
19天前
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
40 0
|
3月前
|
数据采集
爬虫案例—爬取ChinaUnix.net论坛板块标题
爬虫案例—爬取ChinaUnix.net论坛板块标题
67 0
爬虫案例—爬取ChinaUnix.net论坛板块标题
|
4月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
4月前
|
开发框架 .NET 中间件
ASP.NET Core Web 开发浅谈
本文介绍ASP.NET Core,一个轻量级、开源的跨平台框架,专为构建高性能Web应用设计。通过简单步骤,你将学会创建首个Web应用。文章还深入探讨了路由配置、依赖注入及安全性配置等常见问题,并提供了实用示例代码以助于理解与避免错误,帮助开发者更好地掌握ASP.NET Core的核心概念。
122 3
|
3月前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
4月前
|
开发框架 NoSQL .NET
利用分布式锁在ASP.NET Core中实现防抖
【9月更文挑战第5天】在 ASP.NET Core 中,可通过分布式锁实现防抖功能,仅处理连续相同请求中的首个请求,其余请求返回 204 No Content,直至锁释放。具体步骤包括:安装分布式锁库如 `StackExchange.Redis`;创建分布式锁服务接口及其实现;构建防抖中间件;并在 `Startup.cs` 中注册相关服务和中间件。这一机制有效避免了短时间内重复操作的问题。
104 4