web-dev-qa-db-ja.com

パッケージマネージャーコンソールで以前のバージョンに "パッケージを更新"する方法はありますか

プロジェクトにパッケージのバージョンがインストールされていますが、テスト中に問題が見つかりました。当たり前のことを試しましたUpdate-Package -Id Foo.Bar -Version 1.0.0 -Forceしかし、Update-Packageコマンドレットには-Forceパラメーターがなく、以前のバージョンへの更新は許可されていません。 (ソース管理を利用せずに)パッケージの依存関係をダウングレードするにはどうすればよいですか?


注:この質問は、Update-Package MyPackage -Version [an earlier version]は、NuGet Package Managerの最近のバージョンでそのまま使用できます。 -Forceスイッチ。

49
Damian Powell

私はすでにこれに対する解決策を持っていると思うので、(建設的な)批判のためにここに配置します。

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スイッチを使用すると、プロジェクト内に依存パッケージがある場合でも、パッケージを再インストールできます。

35
Damian Powell

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

NuGet2.8クライアント以上では、Install-Packageを使用して、必要に応じてプロジェクト内の既存のパッケージをダウングレードできます。たとえば、新機能を試すためにパッケージのプレリリースバージョンをインストールしていて、以前の安定したバージョンに戻したい場合は、Install-Package(またはUpdate-Package)を使用できます。

10
Frol

私は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そして現在の依存関係ですべてを再インストールする必要があります。

5
Jeff Martin