【问题标题】:Error Updating View After Publishing Nuget Package Via API通过 API 发布 Nuget 包后更新视图时出错
【发布时间】:2020-05-05 14:21:48
【问题描述】:

我们最近发现了几个发布管道,它们使用 nuget API 的弃用版本来更新已发布 nuget 包的视图(在包上设置预发布/发布)。更新 Web 服务调用以符合 5.1 api 后,我们在调用此 Web 服务来设置已发布包的属性时收到以下错误

网络服务:

https://pkgs.dev.azure.com/<org_name>/_apis/packaging/feeds/<feed_name>/upack/packages/<package_name>/versions/2.0.20126.03?api-version=5.1-preview.1

错误:

提供的包版本无效。通用包版本必须是没有构建元数据的小写 SemVer 2.0 版本。包版本必须小于128个字符,主要/次要/补丁必须小于等于2147483647

我是 SemVer 和发布 Nuget 包的新手,知道如何解决这个问题吗?工件发布,版本号如上2.0.20126.03

【问题讨论】:

  • 无法获取您的最新信息,该解决方法对您有帮助吗?或者,如果您有任何疑虑,请随时在此处分享。根据你的问题,你想推广nuget包视图,但你调用的api是通用包。

标签: azure-devops nuget nuget-package


【解决方案1】:

您可以在powershell任务中尝试以下脚本,看看是否有效。

$token = "Enter your Pat here"

$url = "https://pkgs.dev.azure.com/OrgName/ProjectName/_apis/packaging/feeds/FeedID/nuget/packagesbatch?api-version=5.1-preview.1"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$JSON = @'
{
  "data": {
    "viewId": "Release"
  },
  "operation": 0,
  "packages": [{
    "id": "YourPackageName",
    "version": "PackageVersion",
    "protocolType": "nuget"
  }]
}
'@

$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -ContentType application/json -body $JSON

您可以在 viewID 中设置 PreRelease/Release 以将 Azure DevOps 源视图中的 nuget 包从 @local 提升到 @pre-release@release

此外,您还可以尝试使用Promote package to Release View 扩展来在提要中推广包。

【讨论】:

    【解决方案2】:
    <feed_name>/upack/packages
    

    upack表示Universal包而不是nuget包,nuget包相关的rest api为{feedId}/nuget/packages

    对于通用包,基于此文档:Publish a Universal Package

    包名必须小写,并且只能使用字母、数字和破折号 (-)。包版本必须是小写的 Semantic Versioning (SemVer) 2.0.0,不带构建元数据(+ 后缀)。

    您的版本/名称无效,您可以改用 4.0.20126-0.3 或 4.0.20126-3。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多