Как я могу «обновить пакет» до предыдущей версии в консоли диспетчера пакетов? - PullRequest
49 голосов
/ 01 февраля 2012

У меня установлена ​​версия пакета в моем проекте, но во время тестирования я обнаружил проблему с ней.Я попробовал очевидную вещь Update-Package -Id Foo.Bar -Version 1.0.0 -Force, но командлет Update-Package не имеет параметра -Force и не позволяет обновлять более раннюю версию.Как мне понизить мою зависимость от пакетов (без использования контроля версий!)


ПРИМЕЧАНИЕ: Этот вопрос теперь не имеет значения, поскольку Update-Package MyPackage -Version [an earlier version] работает из коробки в последних версияхдиспетчера пакетов NuGet.Вам даже не нужен переключатель -Force.

Ответы [ 3 ]

35 голосов
/ 01 февраля 2012

Я думаю, что у меня уже есть решение для этого, поэтому я помещаю его здесь для (конструктивной) критики.

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

}

Это позволяет нам использовать вызов, такой как следующий, чтобы обновить все ссылки на пакет в текущем решении.

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

Ключ -Force позволяет переустановить пакет, даже если в проекте есть зависимые пакеты.

10 голосов
/ 10 марта 2015

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

С клиентом NuGet 2.8 или выше Install-Package может использоваться для понижения версии существующих пакетов в вашем проекте, если это необходимо. Например, если вы установили предварительную версию пакета, чтобы опробовать новые функции, но хотели бы вернуться к предыдущей стабильной версии, вы можете сделать это, используя Install-Package (или Update-Package).

5 голосов
/ 19 марта 2013

У меня был Foo.Bar v1, который зависел от log4net v2, мне нужно было понизить зависимость log4net до 1.2.10, поэтому я сделал Foo.Bar v1.1 зависимым от log4net v1.2.10.

Я обнаружил, что если вы Update-Package Foo.Bar обновитесь до последней версии (не переустановите зависимости)

Но тогда вы можете Update-Package -Id Foo.Bar -Reinstall, и это должно переустановить все с текущими зависимостями.

...