I have a version of a package installed in my project but during testing I have found a problem with it. I tried the obvious thing Update-Package -Id Foo.Bar -Version 1.0.0 -Force
but the Update-Package cmdlet doesn't have a -Force parameter, and it doesn't allow updates to an earlier version. How do I downgrade my package dependencies (without taking advantage of source control!)
NOTE: This question is now irrelevant because Update-Package MyPackage -Version [an earlier version]
works out of the box in recent versions of NuGet Package Manager. You don't even need a -Force
switch.
I think I already have a solution to this so I place it here for (constructive) criticism.
function Reinstall-Package {
param(
[Parameter(Mandatory = $true)]
[string]
$Id,
[Parameter(Mandatory = $true)]
[string]
$Version,
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
[string]
$ProjectName,
[switch]
$Force
)
if (-not $ProjectName) {
$ProjectName = (get-project).ProjectName
}
Uninstall-Package -ProjectName $ProjectName -Id $Id -Force:$Force
Install-Package -ProjectName $ProjectName -Id $Id -Version $Version
}
This allows us to use a call such as the following to update all references to a package within the current solution.
Get-Project -All |
?{ $_ | Get-Package | ?{ $_.Id -eq 'Foo.Bar' } } |
%{ $_ | Reinstall-Package -Id Foo.Bar -version 1.0.0 -Force }
The -Force switch allows the package to be reinstalled even if it has dependent packages within the project.