从VSTS包源取消列出nuget包的所有版本
我的Visual Studio Team Services(VSTS)帐户的私有包源中有一个包,我希望取消列出我的包的所有版本,因为它已被弃用,并已被其他包取代。因此,我希望通过取消列出旧包来将其标记为弃用(如果可能,不要删除它) 不幸的是,我所能找到的只是一个按钮,它取消了包的一个特定版本的列表,如所述。以这种方式删除我的遗留软件包需要很长时间,因为在从提要中删除软件包之前,我必须轻松地取消列出30个版本从VSTS包源取消列出nuget包的所有版本,nuget,azure-devops,nuget-server,Nuget,Azure Devops,Nuget Server,我的Visual Studio Team Services(VSTS)帐户的私有包源中有一个包,我希望取消列出我的包的所有版本,因为它已被弃用,并已被其他包取代。因此,我希望通过取消列出旧包来将其标记为弃用(如果可能,不要删除它) 不幸的是,我所能找到的只是一个按钮,它取消了包的一个特定版本的列表,如所述。以这种方式删除我的遗留软件包需要很长时间,因为在从提要中删除软件包之前,我必须轻松地取消列出30个版本 我知道NuGET.ORG有一个功能,只需单击一次就可以删除所有版本的包,我认为它是一个基
我知道NuGET.ORG有一个功能,只需单击一次就可以删除所有版本的包,我认为它是一个基本功能。有人知道是有一个技巧还是隐藏的按钮,让我可以更容易地在VST中取消列出包?或者可能有nuget cli命令吗?
无论是通过VSTS web UI还是nuget cli,软件包只能逐个取消列出 取消列出包的格式为:nuget delete <packageID> <packageVersion> [options]
3。循环第2步中得到的包,并取消循环中的列表
nuget delete packagename packageversion -source feedname -ApiKey key
我已创建并使用以下powershell脚本从我的tfs源中取消列出所有nuget包
$nugetFeed = "http://tfs/MyTeam/_packaging/MyProject/nuget/v3/index.json"
$nugetExe = "C:\pathToNuget\nuget.exe"
$packageToDelete = "MyPackage"
$apiKey = "VSTS"
function Get-PackageVersions
{
Param
(
[string]$Package,
[string]$Feed,
[string]$Nuget
)
$packageContent = & $Nuget list -Source $Feed -PreRelease -AllVersions
$packages = $packageContent.Split([Environment]::NewLine)
foreach($line in $packages) {
$parts = $line.Split(' ')
$packageName = $parts[0]
$packageVersion = $parts[1]
if($packageName -eq $Package) {
$packageVersion
}
}
}
$versions = Get-PackageVersions -Package $packageToDelete -Feed $nugetFeed -Nuget $nugetExe
foreach($version in $versions) {
& $nugetExe delete $packageToDelete $version -Source $nugetFeed -ApiKey VSTS $apiKey
}
TFS软件包UI允许您使用CTRL或SHIFT类型选择进行多选和取消列表。我用它来取消列表和推广软件包。如果你需要nuget的相同功能,并且是从谷歌来的,你也可以使用它:
dotnet tool install --global NugetUnlister
然后
nuget-unlist drop PrereleaseBefore -p Some.Package --sv [0.1.3] -k somekey
无论谁想通过DevOps用户界面实现这一点。我编写了一个小控制台脚本,它最多可以标记100个版本(受UI限制),然后您可以取消列出这些版本。如果增加滚动计数器,则无需总是重新开始;) 它会自动向下滚动并等待条目加载
(() => { let view = document.getElementsByClassName('vss-PivotBar--content')[0]; let scroll = 0; let markedElements = 0; let doit = () => { if(view.scrollTop + 500 < view.scrollHeight && markedElements < 100) { console.log('i did scroll to: ' + scroll); let list = document.getElementsByClassName('ms-List-cell'); for (var el of list) { if(el.getElementsByClassName('strike-through').length == 0) { let btn = el.getElementsByClassName('ms-Check')[0]; if(btn.className.indexOf('is-checked') == -1 && markedElements < 100) {btn.click(); markedElements++;} } }console.log(markedElements); scroll++; view.scrollTo(0, 500 * scroll); setTimeout(()=>doit(), 2000); }}; doit(); })()
(()=>{let view=document.getElementsByClassName('vss-PivotBar--content')[0];let scroll=0;let markedElements=0;let doit=()=>{if(view.scrollTop+500doit(),2000)};doit();}()
无需脚本即可取消所有软件包的列表
只需在UI中单击几下即可完成:
Artifacts/Packages
Versions
选项卡Unlist
遗憾的是没有简单的方法,但你是对的,剧本会适合我的。谢谢!
nuget-unlist drop PrereleaseBefore -p Some.Package --sv [0.1.3] -k somekey
(() => { let view = document.getElementsByClassName('vss-PivotBar--content')[0]; let scroll = 0; let markedElements = 0; let doit = () => { if(view.scrollTop + 500 < view.scrollHeight && markedElements < 100) { console.log('i did scroll to: ' + scroll); let list = document.getElementsByClassName('ms-List-cell'); for (var el of list) { if(el.getElementsByClassName('strike-through').length == 0) { let btn = el.getElementsByClassName('ms-Check')[0]; if(btn.className.indexOf('is-checked') == -1 && markedElements < 100) {btn.click(); markedElements++;} } }console.log(markedElements); scroll++; view.scrollTo(0, 500 * scroll); setTimeout(()=>doit(), 2000); }}; doit(); })()