プロジェクトにパッケージのバージョンがインストールされていますが、テスト中に問題が見つかりました。当たり前のことを試しましたUpdate-Package -Id Foo.Bar -Version 1.0.0 -Force
しかし、Update-Packageコマンドレットには-Forceパラメーターがなく、以前のバージョンへの更新は許可されていません。 (ソース管理を利用せずに)パッケージの依存関係をダウングレードするにはどうすればよいですか?
注:この質問は、Update-Package MyPackage -Version [an earlier version]
は、NuGet Package Managerの最近のバージョンでそのまま使用できます。 -Force
スイッチ。
私はすでにこれに対する解決策を持っていると思うので、(建設的な)批判のためにここに配置します。
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スイッチを使用すると、プロジェクト内に依存パッケージがある場合でも、パッケージを再インストールできます。
https://docs.nuget.org/consume/package-manager-console-powershell-reference
NuGet2.8クライアント以上では、Install-Packageを使用して、必要に応じてプロジェクト内の既存のパッケージをダウングレードできます。たとえば、新機能を試すためにパッケージのプレリリースバージョンをインストールしていて、以前の安定したバージョンに戻したい場合は、Install-Package(またはUpdate-Package)を使用できます。
私はlog4net v2に依存するFoo.Bar v1を持っていました。log4net依存関係を1.2.10にダウングレードする必要があったので、Foo.Bar v1.1をlog4net v1.2.10に依存させました。
もしあなたがUpdate-Package Foo.Bar
最新バージョンに更新されます(依存関係は再インストールされません)
しかし、次にできますUpdate-Package -Id Foo.Bar -Reinstall
そして現在の依存関係ですべてを再インストールする必要があります。