我们最近发现了多个发布管道,这些管道使用了不推荐使用的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
答案 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。