【问题标题】:unlist all versions of a nuget package from VSTS package feed从 VSTS 包源中取消列出所有版本的 nuget 包
【发布时间】:2017-09-20 15:31:41
【问题描述】:

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

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

我知道 nuget.org 具有一键取消列出软件包所有版本的功能,我认为这是一项基本功能。有谁知道是否有一个技巧或隐藏按钮可以让我在 VSTS 中更轻松地取消列出包?或者可能有一个 nuget cli 命令?

【问题讨论】:

    标签: nuget azure-devops nuget-server


    【解决方案1】:

    无论是 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。循环你在第 2 步中获得的包,并在循环中取消列出它们

    nuget delete packagename packageversion -source feedname -ApiKey key
    

    【讨论】:

    • 很遗憾没有简单的方法,但你是对的,脚本对我有用。谢谢!
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      在 UI 中点击几下即可完成:

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

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

      【讨论】:

        【解决方案4】:

        我已创建并使用以下 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
        }
        

        【讨论】:

          【解决方案5】:

          如果你对 nuget 需要同样的东西,并且从谷歌来到这里,你也可以使用这个:

          dotnet tool install --global NugetUnlister
          

          然后

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

          【讨论】:

            【解决方案6】:

            适合任何想通过 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(); })()
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2019-01-11
              • 1970-01-01
              • 1970-01-01
              • 2015-08-22
              • 1970-01-01
              • 2016-12-16
              相关资源
              最近更新 更多