如何編寫.NET Core Global 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

1527943849844

然后我們執行命令使用該工具

dotnetsay

它為我我們輸出了一個機器人:

1527943917609

你可以訪問 dotnetsay 的源碼來學習如何編寫 tool。

三.編寫第一個.NET Core Global Tool

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

1527944184726

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,編輯我們的包信息。

1527944524481

5.打包

我們可以使用 dotnet pack 命令來進行打包,也可以使用VS提供的菜單來進行打包:選中項目->右鍵菜單->打包 (項目配置選為 Release),然后在 bin\Release目錄下,就可以找到我們打包的nuget包。

1527944719444

6.安裝

打開命令提示符(cmd),進入到nuget包所在目錄,執行命令進行安裝:

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

出現如下提示表示安裝成功:

1527944852431

然后我們使用list命令來進行查詢已安裝的工具列表:

dotnet tool list -g

1527944910807

可以看到,我們編寫的工具已經安裝成功了。

7.使用

我們在命令提示符(cmd)中使用命令 hellodotnetcoretool,可以輸出我們剛剛編寫的 “Hello .NET Core Global Tools”

1527945020318

四.發布到 nuget.org

我們可以將我們編寫的工具發布到 nuget.org ,那么任何人都可以通過命令安裝、使用我們的工具了。

使用瀏覽器訪問:http://www.nuget.org/ ,然后注冊賬戶進行登錄。

我們選擇右上角的菜單 “Upload Packages”

選擇我們剛剛打包的文件進行上傳就可以了:

1527945285451

上傳以后,需要等待10分鍾左右,nuget.org 會對你的包來進行驗證,這個時候你是無法通過命令來安裝你的工具的,只有驗證通過了才行。然后再等20分鍾左右,nuget.org 便會對你的工具進行索引,這個時候就能過通過搜索來訪問你的工具了。

五.案例

我編寫了兩個實用的 .NET Core Global Tool ,在這里為大家做一下簡單的介紹

1.DotnetRSA

它是一個生成RSA加密算法所需的秘鑰的工具,支持生成xml、pkcs1、pkcs8三種格式,並且支持三種格式之間進行相互轉換。它是一個正規的命令行應用程序。你可以使用命令來進行安裝:

dotnet tool install -g dotnetrsa

詳細介紹:https://www.cnblogs.com/stulzq/p/9131074.html
項目地址:https://github.com/stulzq/dotnetrsa

簡單演示,生成一個 xml 格式,長度為2048的RSA秘鑰

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

1527945798587

生成的秘鑰:

1527945834777

1527945856204

2.dotnet-cnblog

前面我寫了一篇文章 《如何高效的編寫與同步博客 (.NET Core 小工具實現)》,在里面我介紹了一個使用 .NET Core 實現的可以快速解析Markdown文件里的本地圖片,並上傳到博客園,同事進行內容轉換然后保存到新的文件里,可以讓你的博客快速的發布在博客園,不需要手動對每張圖片進行上傳,是一個十分方便快捷使用的小工具,現在我將它改造成了 .NET Core Global Tool,你可以使用命令來進行安裝:

dotnet tool install -g dotnet-cnblog

使用方法為:

dotnet-cnblog <Markdown文件路徑>

使用演示:

詳細介紹以及項目地址請訪問:https://github.com/stulzq/CnBlogPublishTool

六.其他工具

由 natemcmaster 維護了一個工具列表,請訪問 https://github.com/natemcmaster/dotnet-tools 進行查看,我編寫的dotnetrsa工具已加入此列表。

1527946434563

七.參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM