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
とかした方がおそらく管理しやすいだろう