チュートリアル: .NET CLI を使用して .NET ツールを作成する
この記事の対象: ✔️ .NET Core 2.1 SDK 以降のバージョン
このチュートリアルでは、.NET ツールを作成およびパッケージ化する方法について説明します。 .NET CLI では、他のユーザーがインストールおよび実行できる、コンソール アプリケーションをツールとして作成できます。 .NET ツールは、.NET CLI でインストールする NuGet パッケージです。 ツールの詳細については、.NET ツールの概要に関する記事を参照してください。
作成するツールは、メッセージを入力として受け取り、ロボットの画像を作成するテキスト行と共にメッセージを表示するコンソール アプリケーションです。
これは、3 つのチュートリアル シリーズの第 1 回です。 このチュートリアルでは、ツールを作成してパッケージ化します。 次の 2 つのチュートリアルでは、グローバル ツールとしてツールを使用する方法と、ローカル ツールとしてツールを使用する方法を説明します。 ツールを作成する手順は、グローバル ツールとローカル ツールのどちらとして使用する場合でも同じです。
前提条件
.NET SDK 6.0.100 以降のバージョン。
このチュートリアルでは .NET SDK 6.0 を使用しますが、.NET Core SDK 2.1 より、グローバル ツールが利用できます。 ローカル ツールは .NET Core SDK 3.0 以降で使用できます。
ユーザーが選んだテキスト エディターまたはコード エディター。
プロジェクトを作成する
コマンド プロンプトを開き、repository という名前のフォルダーを作成します。
repository フォルダーに移動し、次のコマンドを入力します。
dotnet new console -n microsoft.botsay -f net6.0
このコマンドを実行すると、repository フォルダーの下に microsoft.botsay という名前の新しいフォルダーが作成されます。
注意
このチュートリアルでは、.NET 6.0 を対象にするツールを作成します。 別のフレームワークを対象にするには、
-f|--framework
オプションを変更します。 複数のフレームワークを対象にするには、次の例に示すように、プロジェクト ファイルのTargetFrameworks
要素にTargetFramework
要素を変更します。<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFrameworks>net8.0;net6.0</TargetFrameworks> </PropertyGroup> </Project>
microsoft.botsay フォルダーに移動します。
cd microsoft.botsay
コードの追加
コード エディターで Program.cs ファイルを開きます。
Program.cs のコードを次のコードに置き換えます。
using System.Reflection; namespace microsoft.botsay; internal class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } }
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
メソッドを呼び出すと、すべての引数が 1 つの文字列に連結され、出力されます。文字列パラメーターを受け取る
ShowBot
という新しいメソッドを追加します。 このメソッドを実行すると、テキストの行を使用してメッセージとロボットの画像を出力されます。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
区切り記号 --
の後の引数は、すべてアプリケーションに渡されます。
ツールをパッケージ化する
アプリケーションをパッケージ化してツールとして配布する前に、プロジェクト ファイルを変更する必要があります。
microsoft.botsay.csproj ファイルを開き、3 つの新しい XML ノードを
<PropertyGroup>
ノードの最後に追加します。<PackAsTool>true</PackAsTool> <ToolCommandName>botsay</ToolCommandName> <PackageOutputPath>./nupkg</PackageOutputPath>
<ToolCommandName>
は、インストール後にツールを呼び出すコマンドを指定する省略可能な要素です。 この要素を指定しない場合、ツールのコマンド名は、.csproj 拡張子のないアセンブリ ファイル名になります。<PackageOutputPath>
は、NuGet パッケージが生成される場所を決定する省略可能な要素です。 NuGet パッケージは、.NET CLI でツールのインストールに使用されるものです。プロジェクト ファイルは次の例のようになります。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <PackAsTool>true</PackAsTool> <ToolCommandName>botsay</ToolCommandName> <PackageOutputPath>./nupkg</PackageOutputPath> </PropertyGroup> </Project>
dotnet pack コマンドを実行して、NuGet パッケージを作成します。
dotnet pack
microsoft.botsay.1.0.0.nupkg ファイルは、microsoft.botsay.csproj ファイルの
<PackageOutputPath>
値で識別されるフォルダー (この例では、 ./nupkg フォルダー) に作成されます。ツールをリリースする場合は、
https://www.nuget.org
にアップロードすることができます。 NuGet 上でツールを使用できるようになると、開発者は dotnet tool install コマンドを使用してツールをインストールできます。 このチュートリアルでは、ローカルの nupkg フォルダーからパッケージを直接インストールするため、NuGet にパッケージをアップロードする必要はありません。
トラブルシューティング
チュートリアルの実行中にエラー メッセージが表示された場合は、「.NET ツールの使用に関する問題のトラブルシューティング」を参照してください。
次の手順
このチュートリアルでは、コンソール アプリケーションを作成し、ツールとしてパッケージ化しました。 このツールをグローバル ツールとして使用する方法については、次のチュートリアルに進んでください。
必要に応じて、グローバル ツール チュートリアルをスキップし、ローカル ツール チュートリアルに直接移動できます。
.NET