dotnet cli には dotnet tool と言って、(コンソール)アプリケーションを管理できる機能がある。 雑多なコードをほぼほぼC#でしか書いていないのであれば、これで管理しておけば少し楽になるかも?と思った次第。
つかう
$ dotnet tool install -g xxx
でグローバル(所定のパス)にxxxパッケージのアプリケーションがインストールされる。
アプリケーションの実行方法はインストール時にコンソールに表示されるのでそれに従う。
環境を汚さないようにローカルインストールもできる。その場合は
$ dotnet new tool-manifest
で設定ファイルを作った後に
$ dotnet tool install xxx
でインストールする(-g
オプションが要らない)。
その際、設定ファイルが更新されるので、それを他所の環境に持って行って
$ dotnet tool restore
すると状態を復元できる。
パッケージの取得は、ライブラリとかのパッケージと同じくnuget.orgからとなる。これ以外から持ってきたい場合は
$ dotnet nuget add source yyy -n zzz
として、yyyy を新たな参照先として追加できる(-n zzz
で管理用の名前を付けておくと楽)。もしくは
$ dotnet tool install --add-source yyy xxx
として、一時的に参照する。
ツールを更新する場合は以下(グローバルの場合は-g
オプションが必要)。
$ dotnet tool update xxx
dotnet nuget add source
せずに--add-source
付きでインストールしていた場合は、更新時にも--add-source
が要る。
もちろんアンインストールもできる(グローバルの場合は-g
オプションが必要)。
$ dotnet tool uninstall xxx
つくる
*.csproj
ファイルに<PackAsTool>true</PackAsTool>
を追加しdotnet pack
すれば dotnet tool 用のパッケージができる。
参考記事は以下。
後は、PackageId
プロパティでパッケージ名、ToolCommandName
プロパティでコマンド名をそれぞれ指定できる。
無指定の場合は、csprojのファイル名が使われる(たぶん)。
バージョンはVersion
プロパティで指定できるが、gitのtagなどから値を取得して
$ dotnet pack -p:PackageVersion=vvv
とかした方がおそらく管理しやすいだろう