Delen via


Powershell script to re-install Nuget packages

Here's a simple Powershell script I wrote to re-install the Nuget packages that are associated with the current Visual Studio solution.

In case you're wondering why you might want to do this, I often create backups of code that I'm working on.  I deliberately exclude the "packages" folder from the backup so I keep the backup file size as small as possible.  For what it's worth, I typically exclude the "bin" and "obj" folders too.  Anyway, if I need to refer to one of my backups, I wanted a way to easily re-build the packages folder.  As the packages.config file IS included in my backups, I can easily re-install the relevant packages via the following Powershell script executed from the Nuget Package Manager Console.  For example:

PM> .\Install-Packages.ps1

Where "Install-Packages.ps1" contains the following code and is in the same folder as my Visual Studio solution (.sln) file:

 

$projects = Get-Project -All

foreach($proj in $projects)
{
 $projName = $proj.Name
 Write-Host "Processing project $projName..."

 $path = Join-Path (Split-Path $proj.FileName) packages.config

 if(Test-Path $path)
 {
  Write-Host "Processing $path..."

  $xml = [xml]$packages = Get-Content $path
  foreach($package in $packages.packages.package)
  {
   $id = $package.id
   Write-Host "Installing package $id..."      
       Install-Package -Id $id -Version $package.version
  }
 }
}

 

A possible improvement would be to wrap the above code in a Powershell function and include that unction in my Nuget profile as discussed in Setting up a NuGet Powershell Profile.