web-dev-qa-db-fra.com

Comment puis-je «mettre à jour le package» vers une version précédente dans la console du gestionnaire de packages?

J'ai une version d'un package installé dans mon projet mais lors des tests, j'ai trouvé un problème avec. J'ai essayé la chose évidente Update-Package -Id Foo.Bar -Version 1.0.0 -Force mais la cmdlet Update-Package n'a pas de paramètre -Force et ne permet pas les mises à jour d'une version antérieure. Comment rétrograder les dépendances de mes packages (sans profiter du contrôle de code source!)


NOTE: Cette question est maintenant hors de propos car Update-Package MyPackage -Version [an earlier version] est prêt à l'emploi dans les versions récentes de NuGet Package Manager. Vous n'avez même pas besoin d'un -Force commutateur.

49
Damian Powell

Je pense que j'ai déjà une solution à cela, donc je la place ici pour une critique (constructive).

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

}

Cela nous permet d'utiliser un appel tel que le suivant pour mettre à jour toutes les références à un package dans la solution actuelle.

 Get-Project -All |
     ?{ $_ | Get-Package | ?{ $_.Id -eq 'Foo.Bar' } } |
         %{ $_ | Reinstall-Package -Id Foo.Bar -version 1.0.0 -Force }

Le commutateur -Force permet de réinstaller le package même s'il a des packages dépendants dans le projet.

35
Damian Powell

https://docs.nuget.org/consume/package-manager-console-powershell-reference

Avec NuGet client 2.8 ou supérieur , Install-Package peut être utilisé pour rétrograder les packages existants dans votre projet, si nécessaire. Par exemple, si vous avez installé une version préliminaire d'un package pour essayer de nouvelles fonctionnalités mais que vous souhaitez revenir à une version stable précédente, vous pouvez le faire en utilisant Install-Package (ou Update-Package).

10
Frol

J'avais Foo.Bar v1 qui dépendait de log4net v2, j'avais besoin de rétrograder la dépendance log4net à 1.2.10 donc j'ai fait Foo.Bar v1.1 dépendre de log4net v1.2.10.

J'ai trouvé que si vous Update-Package Foo.Bar il se mettra à jour vers la dernière version (il ne réinstallera pas les dépendances)

Mais alors vous pouvez Update-Package -Id Foo.Bar -Reinstall et cela devrait réinstaller le tout avec les dépendances actuelles.

5
Jeff Martin