如何通过WorkItemTrackingHttpClient在Azure DevOps工作项描述/评论中添加内嵌图片?
如何通过代码给Azure DevOps工作项添加内嵌图片
要实现代码内嵌图片到工作项描述或评论,需要分两步完成:先上传图片作为工作项附件,再在富文本内容中引用该附件。以下是具体实现步骤及代码示例:
1. 上传图片作为工作项附件
使用WorkItemTrackingHttpClient的AddAttachmentAsync方法,将图片文件上传并关联到目标工作项:
using Microsoft.VisualStudio.Services.Common; using Microsoft.VisualStudio.Services.WebApi; using Microsoft.TeamFoundation.WorkItemTracking.WebApi; using Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models; using System.IO; using System.Collections.Generic; // 初始化Azure DevOps连接 var orgUrl = new Uri("https://dev.azure.com/你的组织名"); var patToken = "你的个人访问令牌(PAT)"; var connection = new VssConnection(orgUrl, new VssBasicCredential(string.Empty, patToken)); var workItemClient = connection.GetClient<WorkItemTrackingHttpClient>(); // 读取本地图片文件 string imagePath = @"C:\示例图片.png"; using var imageStream = File.OpenRead(imagePath); // 上传图片到指定工作项 var attachment = await workItemClient.AddAttachmentAsync( contentStream: imageStream, fileName: Path.GetFileName(imagePath), project: "你的项目名", workItemId: 123 // 目标工作项ID );
2. 在描述或评论中引用内嵌图片
上传完成后,通过附件的Id属性构造HTML格式的图片引用,再更新工作项的对应字段:
更新工作项描述
// 构造描述更新操作,使用HTML标签引用附件 var updateOps = new List<JsonPatchOperation> { new JsonPatchOperation { Operation = Operation.Replace, // 若要追加内容可改为Add,Replace会覆盖原有描述 Path = "/fields/System.Description", Value = $@"<p>业务场景说明:</p><img src=""attachment://{attachment.Id}"" alt=""场景截图"">" } }; // 执行工作项更新 await workItemClient.UpdateWorkItemAsync(updateOps, 123);
添加带内嵌图片的评论
// 构造评论更新操作 var commentOps = new List<JsonPatchOperation> { new JsonPatchOperation { Operation = Operation.Add, Path = "/fields/System.History", Value = $@"<p>已完成问题排查,截图如下:</p><img src=""attachment://{attachment.Id}"" alt=""排查截图"">" } }; // 添加评论到工作项 await workItemClient.UpdateWorkItemAsync(commentOps, 123);
注意事项
- 个人访问令牌(PAT)需拥有工作项读写及附件上传权限
- 上传附件时指定
workItemId可直接关联到目标工作项,无需额外操作 - 工作项的描述和评论支持HTML格式,必须使用
attachment://{附件ID}作为图片的src属性值才能实现内嵌显示
内容的提问来源于stack exchange,提问作者Alex Zaitsev
相关产品推荐
相关产品推荐

