はじめに
今回はdotnet tool restore
とdotnet-tools.json
を用いて"現在のディレクトリとサブディレクトリ"で使用するツールのバージョンを固定する方法を紹介したいと思います。
↓ マニフェストファイル(.config/dotnet-tools.json
)のサンプル
{ "version": 1, "isRoot": true, "tools": { "dotnet-t4": { "version": "2.2.1", "commands": [ "t4" ] } } }
概要
.NET CLI
のツール管理コマンドを利用することでNuGet パッケージからインストールされるコマンド プロンプトから呼び出されるコンソール アプリケーション(.NETツール
)のインストール・アンインストール・更新・実行をすることができます。
今回は.NETツール
の中でもインストール ディレクトリまたはそのいずれかのサブディレクトリから起動できるローカルツールに焦点を当てて紹介します。
例えばマニフェストファイル(dotnet-tools.json
)を他の人と共有することによって、dotnet-t4
などの利用するツールのバージョンをプロジェクト単位で合わせることができるのでとても便利です。
ツールは、NuGet パッケージからインストールされ、コマンド プロンプトから呼び出されるコンソール アプリケーションです。 ツールは自分で作成することも、サードパーティによって作成されたツールをインストールすることもできます。
ローカル ツールとして (.NET Core SDK 3.0 以降のバージョンに適用されます)。
ツールのバイナリは、既定のディレクトリにインストールされます。 ツールは、インストール ディレクトリまたはそのいずれかのサブディレクトリから起動できます。 ディレクトリごとに、同じツールの異なるバージョンを使用できます。
.NET CLI では、マニフェスト ファイルを使用して、ディレクトリにローカルとしてインストールされているツールを追跡します。 マニフェスト ファイルがソース コード リポジトリのルート ディレクトリに保存され、そのリポジトリを共同作成者がクローンし、.NET の CLI コマンドを 1 つ呼び出すと、マニフェスト ファイルに記載されているツールをすべてインストールできます。
マニフェストファイルの作成
ローカル アクセス専用のツール (現在のディレクトリとサブディレクトリ用) を利用するためにマニフェストファイル(.config/dotnet-tools.json
)を生成する必要があります。
$ dotnet new tool-manifest テンプレート "dotnet ローカル ツール マニフェスト ファイル" が正常に作成されました。
↓ 生成された.config/dotnet-tools.json
のサンプル
{ "version": 1, "isRoot": true, "tools": {} }
インストールするパッケージ情報をマニフェストファイルに記載する
パッケージをインストールするときにはdotne tool install <パッケージ名>
というコマンドを打ちます。するとインストールが開始されるとともに、dotnet-tools.json
に書き込まれます。
$ dotnet tool install dotnet-t4 NuGet パッケージ署名の認証をスキップしています。 次のコマンドを使用してこのディレクトリからツールを呼び出すことができます: 'dotnet tool run t4' または 'dotnet t4'。 ツール 'dotnet-t4' (バージョン '2.3.1') が正常にインストールされました。マニフェスト ファイル ----/.config/dotnet-tools.json にエントリが追加されました
↓ dotnet-t4
の情報を追記された.config/dotnet-tools.json
のサンプル
{ "version": 1, "isRoot": true, "tools": { "dotnet-t4": { "version": "2.3.1", "commands": [ "t4" ] } } }
ちなみにバージョンを指定するときは--version
を追加します。
$ dotnet tool install dotnet-t4 --version 2.2.1 次のコマンドを使用してこのディレクトリからツールを呼び出すことができます: 'dotnet tool run t4' または 'dotnet t4'。 ツール 'dotnet-t4' (バージョン '2.2.1') が正常にインストールされました。マニフェスト ファイル ----/.config/dotnet-tools.json にエントリが追加されました。
↓ バージョンを指定した.config/dotnet-tools.json
のサンプル
{ "version": 1, "isRoot": true, "tools": { "dotnet-t4": { "version": "2.2.1", "commands": [ "t4" ] } } }
dotnet-tools.jsonに記載されているパッケージをインストールする
dotnet-tools.json
に記載されているパッケージをインストールするには、dotnet tool restore
コマンドを実行します。
$ dotnet tool restore ツール 'dotnet-t4' (バージョン '2.2.1') は復元されました。使用できるコマンド: t4 正常に復元されました。
ローカルツールを呼び出す
インストールディレクトリ内から以下のコマンドを実行します。
$ dotnet <コマンド名>
// dotnet-t4でのサンプル $ dotnet t4 ./SampleProject/Hoge.tt -o ./SampleProject/Hoge.Generated.cs