49 votes

Comment puis-je "mettre à jour un paquet" vers une version antérieure dans la console du gestionnaire de paquets ?

J'ai installé une version d'un paquet dans mon projet, mais au cours des tests, j'ai trouvé un problème avec celui-ci. J'ai essayé la chose la plus évidente Update-Package -Id Foo.Bar -Version 1.0.0 -Force mais la cmdlet Update-Package n'a pas de paramètre -Force, et elle n'autorise pas les mises à jour vers une version antérieure. Comment mettre à niveau les dépendances de mon paquet (sans tirer parti du contrôle de la source !)?


NOTE : Cette question est désormais sans objet car Update-Package MyPackage -Version [an earlier version] fonctionne d'emblée dans les versions récentes de NuGet Package Manager. Vous n'avez même pas besoin d'un -Force interrupteur.

35voto

Damian Powell Points 4156

Je pense avoir déjà une solution à ce problème et 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 paquet 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 paquet même s'il a des paquets dépendants dans le projet.

11voto

Frol Points 141

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

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

5voto

Jeff Martin Points 3958

J'avais Foo.Bar v1 qui dépendait de log4net v2, j'avais besoin de mettre à jour la dépendance de log4net à 1.2.10 donc j'ai fait en sorte que Foo.Bar v1.1 dépende de log4net v1.2.10.

J'ai découvert que si vous Update-Package Foo.Bar il mettra à jour 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X