Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用TFS的cURL和REST API安装扩展时出现问题_Curl_Tfs_Azure Devops_Azure Devops Rest Api_Azure Devops Extensions - Fatal编程技术网

使用TFS的cURL和REST API安装扩展时出现问题

使用TFS的cURL和REST API安装扩展时出现问题,curl,tfs,azure-devops,azure-devops-rest-api,azure-devops-extensions,Curl,Tfs,Azure Devops,Azure Devops Rest Api,Azure Devops Extensions,我正试图在cURL的帮助下,使用tfs2018的restapi在我们的服务器上安装一个扩展。这个过程必须每天重复,这就是为什么我想用cURL命令运行它 到目前为止,我已经知道如何使用以下命令获取服务器上所有已安装扩展的列表。这告诉我连接和身份验证工作得很好 curl -u {username}:{PAT} -d "" -X GET http://{instance}/{collection}/_apis/extensionmanagement/installedextensi

我正试图在cURL的帮助下,使用tfs2018的restapi在我们的服务器上安装一个扩展。这个过程必须每天重复,这就是为什么我想用cURL命令运行它

到目前为止,我已经知道如何使用以下命令获取服务器上所有已安装扩展的列表。这告诉我连接和身份验证工作得很好

curl -u {username}:{PAT} -d "" -X GET http://{instance}/{collection}/_apis/extensionmanagement/installedextensions?api-version=4.1-preview.1
要安装扩展,我已从microsoft文档中阅读了以下信息:

我尝试使用命令安装在此处找到的扩展:

命令是:

curl -u {username}:{PAT} -H "Content-Type: application/json" -X POST http://{instance}/{collection}/_apis/extensionmanagement/installedextensionsbyname/benjhuser/tfs-extensions-build-tasks/3.0.14?api-version=4.1-preview.1
我认为该扩展的发布者、id和版本应该是正确的,因为我从以下发布文档中获取了它们:

答复说,扩展不存在。这令人困惑。有人能给我一些提示吗?可能是什么问题?先谢谢你

{
  "$id": "1",
  "innerException": null,
  "message": "The requested extension 'benjhuser.tfs-extensions-build-tasks' doesn't exist.",
  "typeName": "Microsoft.VisualStudio.Services.Gallery.WebApi.ExtensionDoesNotExistException, Microsoft.VisualStudio.Services.Gallery.WebApi",
  "typeKey": "ExtensionDoesNotExistException",
  "errorCode": 0,
  "eventId": 3000
}
RESTAPI用于安装预安装的扩展。您需要在本地添加扩展。请参阅有关的文档

请尝试以下步骤:

1.打开浏览器的开发工具(F12)并单击安装按钮。您可以在URL中找到发布者名称和扩展名。 2.检查开发工具(F12)中的“网络”选项卡。您可以找到一个RESTAPI,如

获取http://{instance}/{collection}/{u gallery/items?itemName={publisher name}.{extension name}&install=true&installContext={Some context}

installContext不会更改,每次安装新扩展时,您只需在此处更改发布者名称和扩展名: 3.现在,您可以在本地扩展中找到此扩展。

在此之后,您可以使用按名称安装扩展API来安装扩展

步骤摘要

1.
curl-u{username}:{PAT}-X GET http://{instance}/{collection}/{u gallery/items?itemName=benjhuser.tfs extensions build tasks&install=true&installContext={installContext}

2.
curl-u{username}:{PAT}-d”“-H”内容类型:application/json“-X POST http://{instance}/{collection}/\u api/extensionmanagement/installedextensionsbyname/benjhuser.tfs extensions构建任务?api版本=4.1-preview.1

以下是我的结果:


此外,Azure DevOps服务可以直接使用按名称安装扩展API。

嗨,朋友,下面的答案是否解决了您的问题?如果我的回答有帮助或给出了正确的方向。感谢您的帮助,这也将帮助社区中的其他人。@WalterQian MSFT我尝试了该命令,但没有说明版本,但仍返回相同的错误。请尝试在命令中使用installedextensionsbyname,而不是installedextensions。请在我的回答中查看结果截图。嗨,朋友,在安装扩展之前,请先使用另一个GET API。我更新了我的答案。如果您有任何疑问,请随时与我联系。好的,我知道了。我对web应用程序开发了解不多,但如果api installedextensionsbyname只在安装以前安装在服务器上的扩展时有用,那么这就超出了我的目的。有没有办法第一次使用API安装扩展。无论如何,非常感谢您对它的研究。当您安装扩展时,请在我的回答中首先使用GET API。然后,您可以在本地扩展中找到它们。您只需要在第一次获取installContext。您只能使用api installedextensionsbyname来安装本地扩展中存在的扩展。我尝试了get命令。返回的错误表示,“install”和“installContext”命令编写不正确或找不到。html格式的输出显示“在控制器“Microsoft.VisualStudio.Services.Gallery.Web.GalleryController”上找不到公共操作方法“items”。”如果您仍然存在此问题,是否可以与我共享get命令以进行进一步的故障排除?