我知道可以在PM控制台中卸载软件包。 我遇到了另一个项目的依赖关系问题, 我想重新开始,需要一次性删除所有软件包。 有办法吗?
我知道可以在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
在Package Manager控制台中只需键入:
该命令用于卸载包及其依赖项。get-package | uninstall-package -removedependencies
试试这个:
get-package | uninstall-package -removedependencies -force
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}
。 - Mohsen Afshin在我的情况下使用-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 }
请注意,如果您除了依赖包阻止卸载软件包之外还有其他问题,此代码片段将一直运行,直到您手动停止它。
使用Package Manager Console自动恢复(卸载并安装而不更新到最新版本)软件包:
这适用于整个解决方案:
Update-Package -Reinstall
... 或仅适用于特定项目:
Update-Package -Reinstall -Project [ProjectName]
更新了一个脚本,以删除VS解决方案中单个项目的所有nuget包:
$projectName = "MyProjectName"; $packages = Get-Package -ProjectName $projectName; foreach($package in $packages){ Uninstall-Package -ProjectName $projectName -Id $package.Id -Force}
老派的for循环:
$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++
}
}
-force
。这对我起作用了。 - Spikee