1. 程式人生 > >如何編寫.NET Core Global Tools (附兩個案例)

如何編寫.NET Core Global Tools (附兩個案例)

帶來 北京 namespace write blog 生成xml 編輯 依賴項 註冊賬戶

一.什麽是 .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

技術分享圖片

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

dotnetsay

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

技術分享圖片

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

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

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

技術分享圖片

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

技術分享圖片

5.打包

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

技術分享圖片

6.安裝

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

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

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

技術分享圖片

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

dotnet tool list -g

技術分享圖片

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

7.使用

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

技術分享圖片

四.發布到 nuget.org

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

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

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

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

技術分享圖片

上傳以後,需要等待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:\

技術分享圖片

生成的秘鑰:

技術分享圖片

技術分享圖片

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工具已加入此列表。

技術分享圖片

七.參考資料

  • [翻譯] .NET Core 2.1 發布
  • .NET Core 2.1 Global Tools
  • 本文所用代碼:https://github.com/stulzq/BlogDemos/tree/master/HelloDotnetCoreTool

如何編寫.NET Core Global Tools (附兩個案例)