PM 콘솔에서 패키지를 제거 할 수 있다는 것을 알고 있습니다. 다른 프로젝트에서 종속성 문제가 발생하여 다시 시작하고 싶습니다. 한 번에 모든 패키지를 삭제해야합니다. 방법이 있습니까?
답변:
솔루션의 모든 프로젝트에서 모든 패키지를 가져 오려면 Get-Package
. 특정 프로젝트에서 모든 패키지를 가져 오려면 Get-Package -ProjectName "YourProjectName"
.
주의 : 이렇게하면 솔루션의 모든 패키지 가 제거됩니다 . 경우 매개 변수를 사용하는 패키지는 의존성이 존재하는 경우에도 제거됩니다.
-Force
Get-Package | Uninstall-Package -RemoveDependencies -Force
주의 : 이렇게하면 프로젝트의 모든 패키지 가 제거됩니다 . 경우 매개 변수를 사용하는 패키지는 의존성이 존재하는 경우에도 제거됩니다.
-Force
Get-Package -ProjectName "YourProjectName" |
Uninstall-Package -ProjectName "YourProjectName" -RemoveDependencies -Force
-force
. 이것은 나를 위해 일했습니다.
솔루션의 모든 프로젝트에서 모든 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} }
$packages = Get-Package -ProjectName MyProjectName; foreach($package in $packages){ Uninstall-Package -ProjectName MyProjectName -Id $package.Id -Force}
필자의 경우 -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 }
패키지 제거를 방해하는 종속 패키지 외에 다른 문제가있는 경우이 스 니펫은 수동으로 중지 할 때까지 영원히 실행됩니다.
나는 이것이 가능하다고 생각하지 않으므로 한 번에 모든 패키지를 제거하십시오. 그러나 이미 언급했듯이 패키지를 제거 할 수 있지만 다음을 수행하여 종속성을 제거하도록 지시 할 수도 있습니다.
Uninstall-Package OpenIdPortableArea –RemoveDependencies
다음은 Marcus Hammarberg의 블로그입니다. http://www.marcusoft.net/2011/02/nuget-uninstall-remove-dependencies.html
루프 용 더미 구식 :
$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++
}
}