从VSTS包裹Feed中

时间:2017-09-20 15:31:42

标签: nuget azure-devops nuget-server

我的Visual Studio Team Services(VSTS)帐户的私有程序包中有一个程序包,并且想要取消列出我的程序包的所有版本,因为它已被弃用并且已被其他程序包取代。因此我想标记旧程序包通过取消列表来删除它(不删除它,如果可能的话)

不幸的是,我找到的是一个按钮,它会取消列出一个特定版本的软件包,如here所述。以这种方式删除我的旧版程序包需要很长时间,因为我必须在从我的Feed中删除程序包之前轻松取消30个版本。

我知道nuget.org只需点击一下就可以取消列出所有版本的软件包,我认为它是一个基本功能。有谁知道是否有一个技巧或隐藏按钮,允许我在VSTS中更容易地取消列表包?或者是否可能有一个nuget cli命令?

6 个答案:

答案 0 :(得分:4)

无论是通过VSTS网络用户界面还是nuget cli,这些包都只能逐个取消列出

将包取消列表的格式为:

nuget delete <packageID> <packageVersion> [options]

但是您可以编写自己的脚本,以在VSTS Feed in循环中取消列出包。详细步骤如下:

<强> 1。将VSTS Feed添加为凭据

的来源
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 Feed中的所有包

nuget list -source feedname

第3。循环在步骤2中获得的包,并将它们在循环中取消列出

nuget delete packagename packageversion -source feedname -ApiKey key

答案 1 :(得分:2)

TFS软件包UI允许您使用CTRL或SHIFT类型选择进行多重选择和取消列出。我用它来取消列出和升级软件包。

答案 2 :(得分:1)

我已创建并使用以下powershell脚本从我的tfs Feed中取消列出所有nuget包。

out_t out

答案 3 :(得分:1)

如果您需要同样的东西来制作nuget,并且是从google来到这里的,您还可以使用以下方法:

dotnet tool install --global NugetUnlister

然后

nuget-unlist drop PrereleaseBefore -p Some.Package --sv [0.1.3] -k somekey 

答案 4 :(得分:1)

无需脚本即可取消列出所有软件包。

只需在用户界面中单击几下即可完成

  1. 转到您的Devops用户界面
  2. 打开nuget存储库
  3. 然后转到Artifacts/Packages
  4. 选择您的包裹
  5. 打开Versions标签
  6. 勾选列表中的第一条记录(这样您将在其旁边看到一个圆形的勾号)
  7. 向下滚动到列表末尾,并在按住Shift键的同时选中最后一条记录
  8. 在顶部菜单中选择Unlist

重要提示:在撰写本文时,Devops UI中存在一个错误:如果选择的记录超过 100 个,则Unlist命令不会执行任何操作。因此,您可能需要选择100条(或更少)记录的批次中的记录才能使其正常工作!

答案 5 :(得分:0)

对于任何想要通过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(); })()