Visual Studio의 솔루션에서 * 모든 * Nuget 패키지를 제거하는 방법


90

PM 콘솔에서 패키지를 제거 할 수 있다는 것을 알고 있습니다. 다른 프로젝트에서 종속성 문제가 발생하여 다시 시작하고 싶습니다. 한 번에 모든 패키지를 삭제해야합니다. 방법이 있습니까?

답변:


132

솔루션의 모든 프로젝트에서 모든 패키지를 가져 오려면 Get-Package. 특정 프로젝트에서 모든 패키지를 가져 오려면 Get-Package -ProjectName "YourProjectName".


솔루션의 모든 프로젝트에서 모든 패키지 제거

주의 : 이렇게하면 솔루션의 모든 패키지 가 제거됩니다 . 경우 매개 변수를 사용하는 패키지는 의존성이 존재하는 경우에도 제거됩니다.-Force

Get-Package | Uninstall-Package -RemoveDependencies -Force


솔루션 내의 특정 프로젝트에서 모든 패키지 제거

주의 : 이렇게하면 프로젝트의 모든 패키지 가 제거됩니다 . 경우 매개 변수를 사용하는 패키지는 의존성이 존재하는 경우에도 제거됩니다.-Force

Get-Package -ProjectName "YourProjectName" | 
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force

27
끝에 -Force 매개 변수를 추가하는 것이 좋습니다. 그것 없이는 다른 NuGet 패키지와의 종속성을 기반으로하는 모든 종속성을 제거 할 수 없습니다.
Sean Stayns

이것이 진정한 답입니다. 를 사용하라는 Sean의 제안과 결합됩니다 -force. 이것은 나를 위해 일했습니다.
Spikee 2018

86

패키지 관리자 콘솔에서 다음을 입력하십시오.

가져 오기 패키지 | 패키지 제거-제거 된 종속성


14
복잡한 종속성 그래프에 갇히지 않으려면 -Force스위치를 사용하십시오 .
Alireza

12
경고 : 이것은 전체 솔루션 내의 모든 패키지를 제거합니다.
야곱

31

이 시도:

get-package | uninstall-package -removedependencies -force

15

솔루션의 모든 프로젝트에서 모든 NuGet 패키지를 제거하려면 NuGet 패키지 관리자 콘솔에서 다음을 사용하십시오.

foreach($project in $projects){ $packages = Get-Package -ProjectName $project.Name; foreach($package in $packages){ Uninstall-Package -ProjectName $project.Name -Id $package.Id -Force} }

4
좋은 대답입니다. 하나의 프로젝트에 대한 스크립트 :$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
모흐센 아프신

10

필자의 경우 -Force 매개 변수를 사용하면 프로젝트 파일 수정 및 일반적으로 패키지를 제거 할 때 제거되어야하는 일부 바이너리에 대한 참조가 남았습니다.

다음은 -Force 매개 변수를 사용하지 않고 특정 프로젝트에서 모든 패키지를 제거하는 순진한 방법입니다. 실제로 패키지가 남아 있지 않을 때까지 계속해서 패키지를 제거하려고 시도하므로 종속 패키지 (있는 경우)를 언급하는 일부 오류가 표시되지만 리프 패키지가 반복 될 때마다 제거됨에 따라 점점 줄어들 것입니다.

또한 PackageManager 콘솔에서 다음 PowerShell 스 니펫 만 테스트했습니다. ( "도구> NuGet 패키지 관리자> 패키지 관리자 콘솔")

솔루션의 모든 프로젝트에서 모든 패키지 제거

while((Get-Project -All | Get-Package).Length -gt 0) { Get-Project -All | Get-Package | Uninstall-Package }

" WildCardSearch " 라는 단어가 포함 된 프로젝트 만 제거하십시오.

while((Get-Project -All | Where-Object ProjectName -like '*WildCardSearch*'  | Get-Package).Length -gt 0) { Get-Project -All | Where-Object ProjectName -like '*WildCardSearch*' | Get-Package | Uninstall-Package }

패키지 제거를 방해하는 종속 패키지 외에 다른 문제가있는 경우이 스 니펫은 수동으로 중지 할 때까지 영원히 실행됩니다.


3

나는 이것이 가능하다고 생각하지 않으므로 한 번에 모든 패키지를 제거하십시오. 그러나 이미 언급했듯이 패키지를 제거 할 수 있지만 다음을 수행하여 종속성을 제거하도록 지시 할 수도 있습니다.

Uninstall-Package OpenIdPortableArea –RemoveDependencies

다음은 Marcus Hammarberg의 블로그입니다. http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html


3
"종속성 제거"는 하나의 패키지가 다른 패키지에 종속 된 경우 작동합니다. N 패키지가 코어 패키지 (예 : Boost)에 의존하는 경우 작동하지 않습니다. NuGet Boost 패키지를 하나씩 수동으로 제거해야하므로 고통 스럽습니다.
quant_dev

1

루프 용 더미 구식 :

$packages = get-package
$packageId = "Apache.NMS.ActiveMQ"


$counter = 1
foreach($package in $packages){     
    if($package.Id -eq $packageId)
    {   
        Write-Host "`n$counter-Deleting Package:`n"
        $package        
        Uninstall-Package -Id $packageId -ProjectName $package.ProjectName -RemoveDependencies 
        Write-Host "`n============================================`n"
        $counter++
    }
}

1

VS 솔루션의 단일 프로젝트에 대한 모든 너겟 패키지를 제거하는 스크립트를 업데이트했습니다.

$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}

0

패키지 관리자 콘솔을 사용하여 프로젝트에서 패키지 자동 복원 (제거 후 설치) :

업데이트 패키지-재설치

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.