rksoftware

Visual Studio とか C# とかが好きです

dotnet tool の作り方

次のサイトに載っています。

簡単に作ってみましょう。

console アプリを作る

dotnet tool はコンソールアプリなのでまずは普通にコンソールアプリを作っていきます。
.NET アプリはコマンドでプロジェクトを作れるのでコマンドで作っていきます。ここではアプリの名前を SampleDotnetTool としています。

> dotnet new console -n SampleDotnetTool

.csproj ファイルを編集

.csproj ファイルを編集し、次のプロパティを追加します。
ToolCommandName : dotnet tool のコマンド名になります。ここでは Sample としました。
PackageOutputPath : 生成されるパッケージファイルの出力先です。

<PackAsTool>true</PackAsTool>
<ToolCommandName>Sample</ToolCommandName>
<PackageOutputPath>./nupkg</PackageOutputPath>

追加前の .csproj ファイル例

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

追加後の .csproj ファイル例

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <PackAsTool>true</PackAsTool>
    <ToolCommandName>Sample</ToolCommandName>
    <PackageOutputPath>./nupkg</PackageOutputPath>
  </PropertyGroup>
</Project>

ビルド・パック

まずは .csproj ファイルのあるディレクトリへ移動します。

> cd .\SampleDotnetTool\

そこで pack

> dotnet pack

これで、nupkg ディレクトリ内に .nupkg という拡張子のファイルができているはずです。
このファイルを https://www.nuget.org にアップロードすれば、dotnet tool としてインストールできます。

手元でインストール・実行

しかしいきなりアップロードはなかなかです。まずは手元でインストールして動かし、場合によってはデバッグ・テストというところでしょう。

> dotnet tool install --global --add-source ./nupkg SampleDotnetTool

これで手元のファイルでインストールできます。

実行

> Sample
Hello, World!

コンソールアプリのテンプレートは Hello, World! と出力するものなので、Hello, World! と出力されました。

簡単ですね。