visual - powershell install nuget package
¿Cómo puedo "Actualizar paquete" a una versión anterior en la consola de Package Manager? (3)
Tengo una versión de un paquete instalada en mi proyecto, pero durante las pruebas he encontrado un problema con ella. Intenté lo obvio Update-Package -Id Foo.Bar -Version 1.0.0 -Force
pero el cmdlet Update-Package no tiene un parámetro -Force, y no permite actualizaciones a una versión anterior. ¿Cómo puedo degradar mis dependencias de paquete (sin aprovechar el control de origen)?
NOTA: Esta pregunta ahora es irrelevante porque Update-Package MyPackage -Version [an earlier version]
funciona de forma predeterminada en las versiones recientes de NuGet Package Manager. Ni siquiera necesitas un interruptor de -Force
.
Creo que ya tengo una solución para esto, así que la coloco aquí para una crítica (constructiva).
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
}
Esto nos permite usar una llamada como la siguiente para actualizar todas las referencias a un paquete dentro de la solución actual.
Get-Project -All |
?{ $_ | Get-Package | ?{ $_.Id -eq ''Foo.Bar'' } } |
%{ $_ | Reinstall-Package -Id Foo.Bar -version 1.0.0 -Force }
El modificador -Force permite reinstalar el paquete incluso si tiene paquetes dependientes dentro del proyecto.
Tenía Foo.Bar v1 que dependía de log4net v2, necesitaba degradar la dependencia de log4net a 1.2.10, así que hice que Foo.Bar v1.1 dependiera de log4net v1.2.10.
Descubrí que si Update-Package Foo.Bar
se actualizará a la última versión (no volverá a instalar las dependencias)
Pero luego puede Update-Package -Id Foo.Bar -Reinstall
y eso debería reinstalar todo con las dependencias actuales.
https://docs.nuget.org/consume/package-manager-console-powershell-reference
Con el cliente NuGet 2.8 o superior , Install-Package puede usarse para degradar los paquetes existentes en su proyecto, si es necesario. Por ejemplo, si había instalado una versión preliminar de un paquete para probar nuevas características pero desea volver a una versión estable anterior, puede hacerlo utilizando Install-Package (o Update-Package).