この記事の対象: ✔️ .NET Core 2.1 SDK 以降のバージョン
このチュートリアルでは、.NET ツールを作成してパッケージ化する方法について説明します。 .NET CLI を使用すると、他のユーザーがインストールして実行できるコンソール アプリケーションをツールとして作成できます。 .NET ツールは、.NET CLI からインストールされる NuGet パッケージです。 ツールの詳細については、「 .NET ツールの概要」を参照してください。
作成するツールは、メッセージを入力として受け取り、ロボットの画像を作成するテキスト行と共にメッセージを表示するコンソール アプリケーションです。
これは、3 つのチュートリアルのシリーズの最初のチュートリアルです。 このチュートリアルでは、ツールを作成してパッケージ化します。 次の 2 つのチュートリアルでは、 ツールをグローバル ツールとして使用 し、 そのツールをローカル ツールとして使用します。 ツールを作成する手順は、グローバル ツールとして使用する場合でも、ローカル ツールとして使用する場合も同じです。
[前提条件]
.NET SDK 6.0.100 以降のバージョン。
このチュートリアルでは .NET SDK 6.0 を使用しますが、.NET Core SDK 2.1 以降ではグローバル ツールを使用できます。 .NET Core SDK 3.0 以降では、ローカル ツールを使用できます。
任意のテキスト エディターまたはコード エディター。
プロジェクトを作成する
コマンド プロンプトを開き、 リポジトリという名前のフォルダーを作成します。
リポジトリ フォルダーに移動し、次のコマンドを入力します。
dotnet new console -n microsoft.botsay -f net6.0このコマンドにより、リポジトリ フォルダーの下に microsoft.botsay という名前の新しいフォルダーが作成されます。
注
このチュートリアルでは、.NET 6.0 を対象とするツールを作成します。 別のフレームワークを対象にするには、
-f|--frameworkオプションを変更します。 複数のフレームワークを対象にするには、次の例に示すように、TargetFramework要素をプロジェクト ファイル内のTargetFrameworks要素に変更します。<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)); }引数が渡されない場合は、短いヘルプ メッセージが表示されます。 それ以外の場合、すべての引数は 1 つの文字列に連結され、次の手順で作成した
ShowBotメソッドを呼び出して出力されます。文字列パラメーターを受け取る
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 ファイルを開き、
<PropertyGroup>ノードの末尾に 3 つの新しい XML ノードを追加します。<PackAsTool>true</PackAsTool> <ToolCommandName>botsay</ToolCommandName> <PackageOutputPath>./nupkg</PackageOutputPath><ToolCommandName>は、インストール後にツールを呼び出すコマンドを指定する省略可能な要素です。 この要素が指定されていない場合、ツールのコマンド名はアセンブリ名であり、通常は .csproj 拡張子のないプロジェクト ファイル名です。注
<ToolCommandName>の一意の値を選択します。 ツールがアプリ ホストとしてインストールされ、コマンドに拡張子を含めないようにするため、ファイル拡張子 (.exeや.cmdなど) は使用しないでください。 これにより、既存のコマンドとの競合を防ぎ、スムーズなインストール エクスペリエンスを実現できます。<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 packmicrosoft.botsay.1.0.0.nupkg ファイルは、microsoft.botsay.csproj ファイルの
<PackageOutputPath>値で識別されるフォルダーに作成されます。この例では ./nupkg フォルダーです。ツールをパブリックにリリースする場合は、
https://www.nuget.orgにアップロードできます。 NuGet でツールを使用できるようになったら、開発者は dotnet ツールのインストール コマンドを使用してツールをインストールできます。 このチュートリアルでは、ローカル nupkg フォルダーから直接パッケージをインストールするため、パッケージを NuGet にアップロードする必要はありません。
トラブルシューティング
チュートリアルの実行中にエラー メッセージが表示される場合は、「.NET ツールの使用に関する問題のトラブルシューティング を参照してください。
次のステップ
このチュートリアルでは、コンソール アプリケーションを作成し、ツールとしてパッケージ化しました。 ツールをグローバル ツールとして使用する方法については、次のチュートリアルに進んでください。
必要に応じて、グローバル ツールのチュートリアルをスキップし、ローカル ツールのチュートリアルに直接移動できます。
.NET