Как я могу "Обновить пакет" до предыдущей версии в консоли диспетчера пакетов?
У меня есть версия пакета, установленная в моем проекте, но во время тестирования я нашел проблему с ней. Я пробовал очевидную вещь Update-Package -Id Foo.Bar -Version 1.0.0 -Force
, но командлет Update-Package не имеет параметра -Force и не позволяет обновлять более раннюю версию. Как мне понизить мои зависимостей в пакете (без использования источника управления!)
ПРИМЕЧАНИЕ. Этот вопрос теперь не имеет значения, потому что Update-Package MyPackage -Version [an earlier version]
работает из коробки в последних версиях NuGet Package Manager. Вам даже не нужен переключатель -Force
.
Ответы
Ответ 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
, и это должно переустановить все это с текущими зависимостями.