Подтвердить что ты не робот

Как я могу "Обновить пакет" до предыдущей версии в консоли диспетчера пакетов?

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


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

4b9b3361

Ответ 1

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

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 позволяет переустановить пакет, даже если он имеет зависимые пакеты в проекте.

Ответ 2

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

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

Ответ 3

У меня был 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, и это должно переустановить все это с текущими зависимостями.