从 VSTS 包提要中取消列出 nuget 包的所有版本
unlist all versions of a nuget package from VSTS package feed
我的 Visual Studio 团队服务 (VSTS) 帐户的私有包提要中有一个包,我想取消列出我的包的所有版本,因为它已被弃用并已被不同的 package.Thus 我想通过取消列出旧包来将其标记为弃用(如果可能,不要删除它)
不幸的是,我只能找到一个取消列出一个包特定版本的按钮,如here所述。以这种方式删除我的遗留包需要很长时间,因为在从我的提要中删除包之前我必须轻松取消列出 30 个版本。
我知道 nuget.org 具有通过单击取消列出软件包的所有版本的功能,我认为这是一项基本功能。有谁知道是否有技巧或隐藏按钮可以让我在 VSTS 中更轻松地取消列出包?或者可能有一个 nuget cli 命令吗?
无论是 VSTS web UI 还是 nuget cli,包都只能一个一个取消列出。
取消列出包的格式为:
nuget delete <packageID> <packageVersion> [options]
但是您可以编写自己的脚本来在您的 VSTS 提要循环中取消列出包。详细步骤为:
1.使用凭据
添加 VSTS 源作为源
nuget sources add -Name "feedname" -Source "https://account.pkgs.visualstudio.com/_packaging/feedname/nuget/v3/index.json" -Username <Alternate username/email> -password <Alternate password/PAT>
2。列出 VSTS 提要中的所有包
nuget list -source feedname -AllVersions
3。循环step2得到的包,循环unlist
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 类型 select 进行多重 select 和取消列出。我用它来取消列出和推广包裹。
如果你需要 nuget 的同样东西,并且从 google 来到这里,你也可以使用这个:
dotnet tool install --global NugetUnlister
然后
nuget-unlist drop PrereleaseBefore -p Some.Package --sv [0.1.3] -k somekey
对于任何想通过 DevOps 做到这一点的人 UI。我写了一个小控制台脚本,最多标记 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(); })()
取消列出所有包不需要脚本。
在 UI 中单击几下即可完成:
- 转到您的 Devops UI
- 打开 nuget 存储库
- 然后去
Artifacts/Packages
- select 你的包裹
- 打开
Versions
选项卡
- 勾选列表中的第一条记录(这样您会在它旁边看到一个圆形勾号)
- 向下滚动到列表末尾并勾选最后一条记录同时按住 Shift 键
- select
Unlist
在顶部菜单
IMPORTANT NOTE: at the moment of writing there is a bug in Devops UI: if you select more than 100 records, Unlist command does not do anything. So you may need to select records in batches of 100 records (or less) to make it work!
我的 Visual Studio 团队服务 (VSTS) 帐户的私有包提要中有一个包,我想取消列出我的包的所有版本,因为它已被弃用并已被不同的 package.Thus 我想通过取消列出旧包来将其标记为弃用(如果可能,不要删除它)
不幸的是,我只能找到一个取消列出一个包特定版本的按钮,如here所述。以这种方式删除我的遗留包需要很长时间,因为在从我的提要中删除包之前我必须轻松取消列出 30 个版本。
我知道 nuget.org 具有通过单击取消列出软件包的所有版本的功能,我认为这是一项基本功能。有谁知道是否有技巧或隐藏按钮可以让我在 VSTS 中更轻松地取消列出包?或者可能有一个 nuget cli 命令吗?
无论是 VSTS web UI 还是 nuget cli,包都只能一个一个取消列出。
取消列出包的格式为:
nuget delete <packageID> <packageVersion> [options]
但是您可以编写自己的脚本来在您的 VSTS 提要循环中取消列出包。详细步骤为:
1.使用凭据
添加 VSTS 源作为源nuget sources add -Name "feedname" -Source "https://account.pkgs.visualstudio.com/_packaging/feedname/nuget/v3/index.json" -Username <Alternate username/email> -password <Alternate password/PAT>
2。列出 VSTS 提要中的所有包
nuget list -source feedname -AllVersions
3。循环step2得到的包,循环unlist
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 类型 select 进行多重 select 和取消列出。我用它来取消列出和推广包裹。
如果你需要 nuget 的同样东西,并且从 google 来到这里,你也可以使用这个:
dotnet tool install --global NugetUnlister
然后
nuget-unlist drop PrereleaseBefore -p Some.Package --sv [0.1.3] -k somekey
对于任何想通过 DevOps 做到这一点的人 UI。我写了一个小控制台脚本,最多标记 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(); })()
取消列出所有包不需要脚本。
在 UI 中单击几下即可完成:
- 转到您的 Devops UI
- 打开 nuget 存储库
- 然后去
Artifacts/Packages
- select 你的包裹
- 打开
Versions
选项卡 - 勾选列表中的第一条记录(这样您会在它旁边看到一个圆形勾号)
- 向下滚动到列表末尾并勾选最后一条记录同时按住 Shift 键
- select
Unlist
在顶部菜单
IMPORTANT NOTE: at the moment of writing there is a bug in Devops UI: if you select more than 100 records, Unlist command does not do anything. So you may need to select records in batches of 100 records (or less) to make it work!