programing

Package Manager Console에서 이전 버전으로 "Update-Package"하려면 어떻게 해야 합니까?

iphone6s 2023. 9. 9. 09:08
반응형

Package Manager Console에서 이전 버전으로 "Update-Package"하려면 어떻게 해야 합니까?

프로젝트에 패키지 버전이 설치되어 있는데 테스트 중에 문제가 발견되었습니다.나는 당연한 것을 시도했습니다.Update-Package -Id Foo.Bar -Version 1.0.0 -ForceUpdate-Package cmdlet에는 -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

NuGet 2.8 클라이언트 이상의 경우 Install-Package를 사용하여 프로젝트의 기존 패키지를 다운그레이드할 수 있습니다.예를 들어 패키지의 릴리스 전 버전을 설치하여 새로운 기능을 사용해 보았지만 이전의 안정적인 버전으로 돌아가려면 Install-Package(또는 Update-Package)를 사용할 수 있습니다.

푸 먹었어요.log4net v2에 의존했던 bar v1, log4net 의존성을 1.2.10으로 다운그레이드 해야해서 foo를 만들었습니다.Bar v1.1은 log4net v1.2.10에 의존합니다.

만약 당신이Update-Package Foo.Bar최신 버전으로 업데이트됩니다(의존성을 재설치하지 않음).

하지만 그러면 당신은 할 수 있습니다.Update-Package -Id Foo.Bar -Reinstall현재의 의존성으로 다시 설치할 수 있을 겁니다

언급URL : https://stackoverflow.com/questions/9099632/how-can-i-update-package-to-a-previous-version-in-the-package-manager-console

반응형