c# - 对 BuildHttpClientBase.GetBuildWorkItemsRefsAsync 的调用不会返回由具有利益相关者访问权限的用户创建的工作项
问题描述
我正在使用Microsoft.TeamFoundationServer.Client Nuget 包来获取与某些构建相关联的工作项列表。为此,我使用以下代码:
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.WebApi;
using Microsoft.TeamFoundation.Build.WebApi;
public async Task<IEnumerable<ResourceRef>> GetBuildWorkItems(string vstsUrl, string teamProjectName, int buildId, string pat)
{
VssConnection connection = new VssConnection(new Uri(vstsUrl), new VssBasicCredential(string.Empty, pat));
using (var buildClient = connection.GetClient<BuildHttpClient>())
{
var workItems = await buildClient.GetBuildWorkItemsRefsAsync(teamProjectName, buildId);
return workItems;
}
}
这工作正常,除非工作项是由具有涉众访问级别的用户创建的。尤其是这些工作项不会由该GetBuildWorkItemsRefsAsync
方法返回。
这是设计使然吗?我可以在 VSTS 管理员设置中配置有关利益相关者用户的内容,以免发生这种情况吗?
只是为了澄清,我在我的团队项目中使用 TFVC 而不是 Git。我不知道这是否与这个问题有关。
解决方案
试了GetBuildWorkItemsRefsAsync
方法,没发现问题。
但是,您可以简单地使用 REST API 来获取与特定构建关联的工作项列表:
GET https://{accountName}.visualstudio.com/{project}/_apis/build/builds/{buildId}/workitems?api-version=4.1
有关详细信息,请参阅Builds - Get Build Work Items Refs。
以 PowerShell 为例:
Param(
[string]$collectionurl = "https://{account}.visualstudio.com",
[string]$project = "ProjectName",
[string]$BuildID = "283",
[string]$user = "username",
[string]$token = "password"
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$WITbaseUrl = "$collectionurl/$project/_apis/build/builds/$($BuildID)/workitems"
#Response
$WITresponse = (Invoke-RestMethod -Uri $WITbaseUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}).value
$WITrequests = @()
foreach($WITrequest in $WITresponse){
$customObject = new-object PSObject -property @{
"WorkitemID" = $WITrequest.id
"WorkitemURL" = $WITrequest.url
}
$WITrequests += $customObject
}
$WITrequests | Select `
WorkitemID,
WorkitemURL
推荐阅读
- php - 我的 INSERT 准备好的语句正在使用 PHP PDO 制作多条记录
- reactjs - react-native run-android 和 expo start 有什么区别?
- python-3.x - 从 S3 存储桶获取图像时打开的文件过多
- constraints - Tensorflow 2.0:kernel_constraint 不起作用
- php - 在php/html的多列中显示单列mysql数据
- javascript - 在 Laravel 6.0 中使用 AJAX 不显示依赖下拉菜单
- angular - vs 2019 社区和 Angular 项目
- python - 来自python的hmmlearn的AttributeError
- ruby-on-rails - Rails 与 Bundler 2.0.1 的最早兼容版本是什么?
- python - 在 VS 代码 python 终端中运行 python 时遇到问题