通过API发布Nuget软件包后更新视图时出错

时间:2020-05-05 14:21:48

标签: azure-devops nuget nuget-package

我们最近发现了多个发布管道,这些管道使用了不推荐使用的nuget API版本来更新已发布的nuget程序包上的View(在程序包上设置Prerelease / Release)。将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

2 个答案:

答案 0 :(得分:0)

您可以在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 feed视图中将nuget包从@local升级到@pre-release@release

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

答案 1 :(得分:0)

<feed_name>/upack/packages

upack 表示通用软件包而不是nuget软件包,与nuget软件包相关的rest api是{feedId}/nuget/packages

对于通用软件包,基于以下文档:Publish a Universal Package

软件包名称必须为小写字母,并且只能使用字母,数字和破折号(-)。软件包版本必须为小写的语义版本控制(SemVer)2.0.0,且不包含构建元数据(带后缀)。

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