DEV Community

Cover image for Using dotnet tools
Gustav Ehrenborg
Gustav Ehrenborg

Posted on

Using dotnet tools

Dotnet tools are applications that can assist you with various tasks and functionality. There are tools for checking test coverage, deploying to certain cloud services, code formatting, etc... Nuget has a list here.

The following article will help you get started with the tools using the Swagger CLI, called Swashbuckle.AspNetCore.Cli, as an example.

The cheatsheet

dotnet new tool-manifest # Create a tool manifest file

dotnet tool list # List installed tools

dotnet tool install ToolName # Install a tool

dotnet tool restore # Install the tools in the manifest file

dotnet tool update ToolName # Update a tool

dotnet tool uninstall ToolName # Uninstall a tool

dotnet ToolName # Run a tool
Enter fullscreen mode Exit fullscreen mode

The walkthrough

Local and global tools

Tools can be installed locally or globally. Locally installed tools only work for the specific project, but can leverage the tool manifest file which make the tool setup more portable.

Globally installed tools are available everywhere. The commands for global tools are the same, but the --global flag must be passed on.

The tool manifest file

The command dotnet new tool-manifest will create a file .config/dotnet-tools.json. It is a file that contains a list of the installed tools and which version. If you are familiar with the package.json file in npm, this file has the same purpose. The empty file looks like this:

  "version": 1,
  "isRoot": true,
  "tools": {}
Enter fullscreen mode Exit fullscreen mode

When tools are installed, the tools object will be populated with data about the tools.

Install a tool

dotnet tool install Swashbuckle.AspNetCore.Cli will install the Swagger CLI and add it to the manifest file. If you want a specific version, add --version x.y.z. If you have multiple Nuget sources added, the installation might fail since the installer will look in the wrong source first. Add --ignore-failed-sources to circumvent this.

This is the manifest file with the tool installed:

  "tools": {
    "swashbuckle.aspnetcore.cli": {
      "version": "5.5.1",
      "commands": [
Enter fullscreen mode Exit fullscreen mode

Run a tool

From the manifest file, we can see that the Swagger CLI comes with the command swagger. This means it can be executed with dotnet swagger.

The Swagger CLI generates the Swagger documentation. It only has one command, tofile and takes two required arguments, the path to the compiled .dll file and which version of the API that should be exported.

dotnet swagger tofile bin/debug/net.../something.dll 1

List tools

Run dotnet tool list to see installed tools. This command is especially useful when listing global tools, since no manifest file exists for these.

➜ dotnet tool list
Package Id                   Version   Commands   Manifest
swashbuckle.aspnetcore.cli   5.5.1     swagger
Enter fullscreen mode Exit fullscreen mode

Restore tools

Since the manifest file keeps track of the tools, they can easily be restored on a new machine by running dotnet tool restore.

Uninstall tools

dotnet tool uninstall swashbuckle.aspnetcore.cli will uninstall the Swagger CLI.


There you have it! Explore the available tools, there's probably a tool out there which will enhance your development experience.

Top comments (1)

kaylumah profile image
Max Hamulyák

Dotnet tools are a very nice addition to the ecosystem.
One thing that suprises me though is how many tools recommend installing globally. If you ask me that rather works stuff like “works on my machine” in hand.
Its not like it saving space since they go into the nuget cache on disk