この記事は、.NET 8 SDK 以降のバージョンに適用されます: ✔️
このチュートリアルでは、.NET ツールを作成してパッケージ化する方法について説明します。 .NET CLI を使用すると、他のユーザーがインストールして実行できるコンソール アプリケーションをツールとして作成できます。 .NET ツールは、.NET CLI からインストールされる NuGet パッケージです。 ツールの詳細については、「 .NET ツールの概要」を参照してください。
作成するツールは、現在の.NET環境に関する情報を取得し、.NETバージョン、オペレーティング システムの詳細、環境変数の主要な設定など、それを表示するコンソール アプリケーションです。
このチュートリアルは、3 つのチュートリアルのシリーズの最初のチュートリアルです。 このチュートリアルでは、ツールを作成してパッケージ化します。 次の 2 つのチュートリアルでは、 ツールをグローバル ツールとして使用 し、 そのツールをローカル ツールとして使用します。 ツールを作成する手順は、グローバル ツールとして使用する場合でも、ローカル ツールとして使用する場合も同じです。
[前提条件]
.NET SDK 10.0 以降のバージョン。
このチュートリアルでは .NET SDK 10.0 を使用しますが、このガイドは .NET 8.0 以降に適用されます。
任意のテキスト エディターまたはコード エディター。
プロジェクトを作成する
コマンド プロンプトを開き、 リポジトリという名前のフォルダーを作成します。
リポジトリ フォルダーに移動し、次のコマンドを入力します。
dotnet new console -n dotnet-envこのコマンドにより、リポジトリ フォルダーの下に dotnet-env という名前の新しいフォルダーが作成されます。
dotnet-env フォルダーに移動します。
cd dotnet-env
コードを追加する
コード エディターで Program.cs ファイルを開きます。
内容を次のコードに置き換えます。
using System.Reflection; using System.Runtime.InteropServices; var versionString = Assembly.GetEntryAssembly()? .GetCustomAttribute<AssemblyInformationalVersionAttribute>()? .InformationalVersion .ToString(); Console.WriteLine($"dotnet-env v{versionString}"); Console.WriteLine(new string('-', 40)); Console.WriteLine(); Console.WriteLine("Runtime"); Console.WriteLine($" .NET Version {Environment.Version}"); Console.WriteLine($" Framework {RuntimeInformation.FrameworkDescription}"); Console.WriteLine($" Runtime Identifier {RuntimeInformation.RuntimeIdentifier}"); Console.WriteLine(); Console.WriteLine("System"); Console.WriteLine($" OS {RuntimeInformation.OSDescription}"); Console.WriteLine($" Architecture {RuntimeInformation.OSArchitecture}"); Console.WriteLine($" Machine Name {Environment.MachineName}"); Console.WriteLine($" Processor Count {Environment.ProcessorCount}"); Console.WriteLine(); Console.WriteLine("Environment Variables"); string[] envVars = { "DOTNET_ROOT", "DOTNET_HOST_PATH", "DOTNET_CLI_HOME", "DOTNET_NOLOGO", "NUGET_PACKAGES", "DOTNET_ENVIRONMENT" }; foreach (string name in envVars) { string? value = Environment.GetEnvironmentVariable(name); Console.WriteLine($" {name,-24}{value ?? "(not set)"}"); }このプログラムでは、最上位レベルのステートメントを使用して、
Assembly.GetEntryAssembly()とAssemblyInformationalVersionAttributeを使用してアセンブリの情報バージョンを読み取り、次の 3 つのセクションの情報を表示する前に、アプリ名と区切り線を出力します。-
Runtime —
Environment.VersionとRuntimeInformationを使用した.NETバージョン、フレームワークの説明、ランタイム識別子。 - システム — OS の説明、アーキテクチャ、コンピューター名、プロセッサ数。
-
Environment 変数 — 6 つの主要な.NET関連変数 (
DOTNET_ROOT,DOTNET_HOST_PATH、DOTNET_CLI_HOME、DOTNET_NOLOGO、NUGET_PACKAGES、およびDOTNET_ENVIRONMENT)、構成されていないものに対して(not set)が表示されます。
using System.ReflectionとAssembly.GetEntryAssembly()には、AssemblyInformationalVersionAttributeディレクティブが必要です。using System.Runtime.InteropServicesには、RuntimeInformationディレクティブが必要です。-
Runtime —
変更を保存します。
アプリケーションをテストする
プロジェクトを実行し、出力を確認します。
dotnet run
出力は次の例のようになります。
dotnet-env v1.0.0
----------------------------------------
Runtime
.NET Version 10.0.4
Framework .NET 10.0.4
Runtime Identifier win-x64
System
OS Microsoft Windows 10.0.22631
Architecture X64
Machine Name MY-MACHINE
Processor Count 16
Environment Variables
DOTNET_ROOT (not set)
DOTNET_HOST_PATH (not set)
DOTNET_CLI_HOME (not set)
DOTNET_NOLOGO (not set)
NUGET_PACKAGES (not set)
DOTNET_ENVIRONMENT (not set)
注
表示される値は、コンピューターとインストール.NETによって異なります。 出力はプラットフォームによって異なります。
ツールをパッケージ化する
アプリケーションをツールとしてパックして配布するには、プロジェクト ファイルを変更します。
dotnet-env.csproj ファイルを開き、
<PropertyGroup>ノードの末尾に 3 つの新しい XML ノードを追加します。<PackAsTool>true</PackAsTool> <ToolCommandName>dotnet-env</ToolCommandName> <PackageOutputPath>./nupkg</PackageOutputPath><ToolCommandName>は、インストール後にツールを呼び出すコマンドを指定する省略可能な要素です。 この要素が指定されていない場合、ツールのコマンド名はアセンブリ名であり、通常は .csproj 拡張子のないプロジェクト ファイル名です。注
<ToolCommandName>の一意の値を選択します。 ツールがアプリ ホストとしてインストールされ、コマンドに拡張子を含めないようにするため、ファイル拡張子 (.exeや.cmdなど) は使用しないでください。 これにより、既存のコマンドとの競合を防ぎ、スムーズなインストール エクスペリエンスを実現できます。<PackageOutputPath>は、.NET が NuGet パッケージを生成する場所を決定するための省略可能な要素です。 .NET CLI では、NuGet パッケージを使用してツールをインストールします。プロジェクト ファイルは次の例のようになります。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net10.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <PackAsTool>true</PackAsTool> <ToolCommandName>dotnet-env</ToolCommandName> <PackageOutputPath>./nupkg</PackageOutputPath> </PropertyGroup> </Project>dotnet pack コマンドを実行して NuGet パッケージを作成します。
dotnet packdotnet-env.1.0.0.nupkg ファイルは、
<PackageOutputPath>ファイルの値で識別されるフォルダーに作成されます。この例では ./nupkg フォルダーです。ツールをパブリックにリリースするには、
https://www.nuget.orgにアップロードします。 NuGet でツールを使用できるようになったら、開発者は dotnet ツールのインストール コマンドを使用してツールをインストールできます。 このチュートリアルでは、ローカル nupkg フォルダーから直接パッケージをインストールするため、パッケージを NuGet にアップロードする必要はありません。
トラブルシューティング
チュートリアルの実行中にエラー メッセージが表示される場合は、「.NET ツールの使用に関する問題のトラブルシューティング を参照してください。
次のステップ
このチュートリアルでは、コンソール アプリケーションを作成し、ツールとしてパッケージ化しました。 ツールをグローバル ツールとして使用する方法については、次のチュートリアルに進んでください。
必要に応じて、グローバル ツールのチュートリアルをスキップし、ローカル ツールのチュートリアルに直接移動できます。
こちらも参照ください
.NET