![](/img/trans.png)
[英]Programmatically add @mention for Active Directory User Account in on-prem Azure DevOps Server work item comment (Jan, 2021)
[英]How to link a branch and work item in Azure DevOps programmatically
我正在尝试找到一种方法,通过我正在构建的应用程序在 Azure DevOps 中添加一个分支作为链接(基本上就是这个,但在 C# 控制台应用程序中)。
我开始熟悉 VisualStudio 服务和 TeamFoundation .NET 库,并尝试使用已通过 DevOps UI 创建的这些链接之一获取工作项,并将其移植到另一个工作项,例如:
var workItemWithBranchLink = await _WorkItemTrackingHttpClient.GetWorkItemAsync(3985, expand: WorkItemExpand.Relations);
var workItemWithoutBranchLink = await _WorkItemTrackingHttpClient.GetWorkItemAsync(3988, expand: WorkItemExpand.Relations);
var document = new JsonPatchDocument();
document.Add(new JsonPatchOperation()
{
Operation = Operation.Add,
Path = "/relations",
Value = workItemWithBranchLink.Relations
});
await _WorkItemTrackingHttpClient.UpdateWorkItemAsync(document, (int)workItemWithoutBranchLink.Id);
但是,这会引发异常
Microsoft.VisualStudio.Services.WebApi.Patch.PatchOperationFailedException: '工作项补丁不支持修补路径/关系中的顶级属性。
由于workItemWithoutBranchLink.Relations
为空,我不知道我还能如何修补它。
有任何想法吗?
对于 git links 语法有点不同,这里是一个工作示例(链接master
分支):
VssConnection testConnection = new VssConnection(new Uri("azure-devops-uri"), new Microsoft.VisualStudio.Services.Common.VssCredentials());
var workItemClient = testConnection.GetClient<WorkItemTrackingHttpClient>();
var gitClient = testConnection.GetClient<GitHttpClient>();
string projectId = "cf456145-abgd-ffs23-be61-0fca39681234";
string repositoryId = "d6856145-abgd-42a3-be61-0fca3968c555";
var branchUri = string.Format
(
"vstfs:///Git/Ref/{0}%2f{1}%2f{2}",
projectId,
repositoryId,
"GBmaster"
);
var json = new JsonPatchDocument();
json.Add(
new JsonPatchOperation()
{
Operation = Operation.Add,
Path = "/relations/-",
Value = new
{
rel = "ArtifactLink",
url = branchUri,
attributes = new
{
name = "Branch",
comment = "Comment"
}
}
});
try
{
int workItemToUpdate = 142144;
var update = workItemClient.UpdateWorkItemAsync(json, workItemToUpdate).Result;
}
catch (Exception e)
{
var error = e.Message;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.