How do I uninstall *all* nuget packages from a solution in Visual Studio

Visual Studio-2015Visual Studio-2013Visual Studio-2017Nuget

Visual Studio-2015 Problem Overview


I know I can uninstall-package from the PM console. I got into some dependency issues with another project and I want to start over, and I need to delete all packages in one shot. Is there a way?

Visual Studio-2015 Solutions


Solution 1 - Visual Studio-2015

To get all packages from all projects in the solution use Get-Package. To get all packages from a specific project use Get-Package -ProjectName "YourProjectName".


Remove all packages from all projects in the solution

> Be careful: This will uninstall ALL packages in the solution. If -Force parameter is used, packages are removed even if dependencies exist.

Get-Package | Uninstall-Package -RemoveDependencies -Force


Remove all packages from a specific project within a solution
> Be careful: This will uninstall ALL packages in the project. If -Force parameter is used, packages are removed even if dependencies exist.

Get-Package -ProjectName "YourProjectName" | 
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force

Solution 2 - Visual Studio-2015

In Package Manager Console just type:

> get-package | uninstall-package -removedependencies

Solution 3 - Visual Studio-2015

try this:

get-package | uninstall-package -removedependencies -force

Solution 4 - Visual Studio-2015

If you want to uninstall every NuGet Package from every Project in a Solution, then use this in the NuGet Package Manager Console:

foreach($project in $projects){ $packages = Get-Package -ProjectName $project.Name; foreach($package in $packages){ Uninstall-Package -ProjectName $project.Name -Id $package.Id -Force} }

Solution 5 - Visual Studio-2015

Using the -Force parameter in my case left project file modifications and references to some binaries that should have been removed when normally uninstalling the packages.

Here is a naive method to uninstall all packages from specific projects without using the -Force parameter. Effectively it tries to uninstall the packages over and over again until there are no packages left, so you will see some errors mentioning dependent packages (if you have them) but they will turn up less and less as the leaf packages get removed each iteration.

Also worth mentioning I've only tested the following PowerShell snippets in the PackageManager console. ("Tools > NuGet Package Manager > Package Manager Console")

Uninstall all the packages from all the projects in a solution

while((Get-Project -All | Get-Package).Length -gt 0) { Get-Project -All | Get-Package | Uninstall-Package }

Only remove Projects containing the word "WildCardSearch"

while((Get-Project -All | Where-Object ProjectName -like '*WildCardSearch*'  | Get-Package).Length -gt 0) { Get-Project -All | Where-Object ProjectName -like '*WildCardSearch*' | Get-Package | Uninstall-Package }

Note that if you have another issue apart from dependent packages preventing an uninstall of the package this snippet will run forever until you manually stop it.

Solution 6 - Visual Studio-2015

I do not believe this is possible so un-install ALL packages at once. However, as you already indicated you can un-install a package, but you can also tell it to un install its dependencies doing the following:

> Uninstall-Package OpenIdPortableArea –RemoveDependencies

Here is a blog by Marcus Hammarberg explaining this: http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html

Solution 7 - Visual Studio-2015

Updated a script to remove all nuget packages for single project in VS solution:

$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}

Solution 8 - Visual Studio-2015

Auto-restoring (uninstall and install without updating to the latest version) of packages using Package Manager Console:

Update-Package -Reinstall

... or for specific project only:

Update-Package -Reinstall -Project ProjectName

Solution 9 - Visual Studio-2015

Dummy old-school for loop:

$packages = get-package
$packageId = "Apache.NMS.ActiveMQ"

 
$counter = 1
foreach($package in $packages){ 	
	if($package.Id -eq $packageId)
	{	
		Write-Host "`n$counter-Deleting Package:`n"
		$package		
		Uninstall-Package -Id $packageId -ProjectName $package.ProjectName -RemoveDependencies 
		Write-Host "`n============================================`n"
		$counter++
	}
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondgortiView Question on Stackoverflow
Solution 1 - Visual Studio-2015NormanView Answer on Stackoverflow
Solution 2 - Visual Studio-2015Vladimir ZalmanekView Answer on Stackoverflow
Solution 3 - Visual Studio-2015AmirView Answer on Stackoverflow
Solution 4 - Visual Studio-2015Michal SteynView Answer on Stackoverflow
Solution 5 - Visual Studio-2015NathanView Answer on Stackoverflow
Solution 6 - Visual Studio-2015TResponseView Answer on Stackoverflow
Solution 7 - Visual Studio-2015Vlad SetchinView Answer on Stackoverflow
Solution 8 - Visual Studio-2015MariuszView Answer on Stackoverflow
Solution 9 - Visual Studio-2015Teoman shipahiView Answer on Stackoverflow