dotnet-cleanup: Clean Up Solution, Project & Folder
Tags: dotnet, dotnetcore, powershell, terminal
Published: 2020-03-25 13:38:18

---
title: dotnet-cleanup: Clean Up Solution, Project & Folder
published: true
date: 2018-10-17 15:57:00 UTC
tags: dotnet, dotnetcore, powershell, terminal
canonical_url: https://sebnilsson.com/blog/dotnet-cleanup-clean-up-solution-project-folder/
---

We developers like to think of developing software as an exact science, but **sometimes, you just need to wipe your source-files** to solve some kinds of problems.

For .NET-developers, there are many issues on Stackoverflow which are solved by just deleting your `bin` and `obj`-folders. For people using Node.js, probably just as many answers contains the step of removing your `node_modules`-folder.

Those are some of the reasons why I created `dotnet-cleanup`, which is a [.NET Core Global Tool](https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools) for cleaning up solution, project or folder. This was made easy by following Nate McMaster's post on [getting started with creating a .NET Core global tool package](https://natemcmaster.com/blog/2018/05/12/dotnet-global-tools/).

Deleted files and folders are first moved to a temporary folder before deletion, so **you can continue working with your projects** , while the tool keeps cleaning up in background.

## Installation

Download the [.NET Core SDK 2.1](https://aka.ms/DotNetCore21) or later. The install the [`dotnet-cleanup`](https://www.nuget.org/packages/dotnet-cleanup) .NET Global Tool, using the command-line:

```
dotnet tool install -g dotnet-cleanup
```

## Usage

```
Usage: cleanup [arguments] [options]

Arguments:
  PATH Path to the solution-file, project-file or folder to clean. Defaults to current working directory.

Options:
  -p|--paths Defines the paths to clean. Defaults to 'bin', 'obj' and 'node_modules'.
  -y|--confirm-cleanup Confirm prompt for file cleanup automatically.
  -nd|--no-delete Defines if files should be deleted, after confirmation.
  -nm|--no-move Defines if files should be moved before deletion, after confirmation.
  -t|--temp-path Directory in which the deleted items should be moved to before being cleaned up. Defaults to system Temp-folder.
  -v|--verbosity Sets the verbosity level of the command. Allowed levels are Minimal, Normal, Detailed and Debug.
  -?|-h|--help Show help information
```

The argument `PATH` can point to a specific `.sln`-file or a project-file (`.csproj`, `.fsharp`, `.vbproj`). If a `.sln`-file is specified, all its projects will be cleaned.

If it points to a folder, the folder will be scanned for a single solution-file and then for a single project-file. If multiple files are detected an error will be shown and you need to specify the file.

If not solution or project is found, the folder will be cleaned as a project.

### Example

To cleanup a typical web-project, you can specify the paths to be cleaned in the projects like this:

```
cleanup -p "bin" -p "obj" -p "artifacts" -p "npm_modules"
```

You can find the [source-code on GitHub](https://github.com/sebnilsson/DotnetCleanup), the [latest builds on MyGet](https://www.myget.org/feed/sebnilsson/package/nuget/dotnet-cleanup) and the [package on Nuget](https://www.nuget.org/packages/dotnet-cleanup/).

You can find [a great list of more .NET Core Global Tools on GitHub](https://github.com/natemcmaster/dotnet-tools), maintained by Nate McMaster.