使用 .NET Core CLI 創建 .NET Core 全局工具
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 控制臺應用程序。
dotnet new console -o botsay
導航到由先前命令創建的 botsay
目錄。
添加代碼
使用喜歡的文本編輯器(如 vim
或 Visual Studio Code)打開 Program.cs
文件。
將以下 using
指令添加到文件頂部,這有助於縮短代碼以顯示應用程序的版本信息。
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 示例。
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 全局工具用於安裝你的工具的包。
<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 包。
consoledotnet pack
botsay.1.0.0.nupkg
文件在由 botsay.csproj
文件的 <PackageOutputPath>
XML 值標識的文件夾中創建,在本示例中為 ./nupkg
文件夾。 這樣,就可以輕松地安裝和測試了。 如果想要公開發布一個工具,請將其上傳到 https://www.nuget.org。該工具在 NuGet 上可用後,開發人員就可以使用 dotnet tool install 命令的 --global
選項在用戶範圍內安裝該工具。
現在你已有一個包,請通過該包安裝工具:
consoledotnet 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。
刪除工具
完成工具的試驗後,可以使用以下命令將其刪除:
consoledotnet tool uninstall -g botsay
使用 .NET Core CLI 創建 .NET Core 全局工具