Wednesday, October 27, 2021

.NET Tools - Cannot find a manifest file

A .NET tool is a special NuGet package that contains a console application. You can install a .NET tool as a global tool (using the --global argument) or as a local tool (using the  --local argument).

However when I tried to install a specific tool locally, it failed with the following error message: “Cannot find a manifest file.”

dotnet tool install StrawberryShake.Tools --local

Cannot find a manifest file.

For a list of locations searched, specify the "-d" option before the tool name.

If you intended to install a global tool, add `--global` to the command.

If you would like to create a manifest, use `dotnet new tool-manifest`, usually in the repo root directory.

To install a tool for local access only, it has to be added to a tool manifest file. As I didn’t create such a file, I got the error message mentioned above.

To fix this, we first need to create a tool manifest file by running the dotnet new tool-manifest command:

dotnet new tool-manifest

Getting ready...

The template "Dotnet local tool manifest file" was created successfully.

This command creates a manifest file named dotnet-tools.json under the .config directory.

Now we can retry the install command and this time it will succeed:

dotnet tool install StrawberryShake.Tools --local

You can invoke the tool from this directory using the following commands: 'dotnet tool run dotnet-graphql' or 'dotnet dotnet-graphql'.

Tool 'strawberryshake.tools' (version '12.0.1') was successfully installed. Entry is added to the manifest file C:\projects\IAMCore\.config\dotnet-tools.json.

If we take a look at the manifest file, we can see the following info:

More information: https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools