将TFS REST API与存储的查询一起使用时是否会编译?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将TFS REST API与存储的查询一起使用时是否会编译?相关的知识,希望对你有一定的参考价值。
这里提到:Using the TFS REST API to get all work items in an iteration和我已经在https://www.visualstudio.com/en-us/docs/integrate/api/wit/queries#get-a-query-or-folder的VS文档一起工作了
我们尝试根据TFS服务器上存储的查询生成更改日志文本文件。在REST API之前,我们使用的是VS 2012/2013 TFS库,但现在正在转向REST。
现在通过阅读文档,我看到在查询工作项时我应该为最多200个工作项(https://www.visualstudio.com/en-us/docs/integrate/api/wit/wiql#get-work-items)执行此操作
如果我正确理解文档,那么我需要6个http查询来存储返回607个工作项的存储查询。
- 按名称获取存储查询 - >
http://server/Project/_apis/wit/queries/Shared%20Queries/Change%20Log?api-version=1.0&$expand=all
,返回查询的WIQL URL - 查询WIQL - >返回607个ID
- 为前200个工作项创建工作项查询
- 接下来的200
- 接下来的200
- 为接下来的7
然后组装这些工作项并根据查询号提供的显示列配置对它们进行格式化。 1。
通过测试200个工作项限制,我发现内部部署安装实际上允许更多的工作项。目前,最大工作项数量由GET请求长度2096定义(在TFS 2017上测试)。
这是如何执行存储查询的确认方法吗?
是的,这是正确的方法。
发送REST API的简单C#代码:
String MyURI = "[REST API URL]";
WebRequest WReq = WebRequest.Create(MyURI);
WReq.Credentials =
new NetworkCredential("[user name]", "[password]", "[domain]");
WebResponse response = WReq.GetResponse();
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Display the content.
Console.WriteLine(responseFromServer);
另一方面,你可以run the query with WIQL string。
关于获取存储查询的WIQL字符串,可以使用TFS .net客户端API。
NetworkCredential cred = new NetworkCredential("[user name]", "[password]", "[domain]");
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("[collection URL"), cred);
tpc.EnsureAuthenticated();
WorkItemStore wis = tpc.GetService(typeof(WorkItemStore)) as WorkItemStore;
QueryHierarchy queryRoot = wis.Projects["[team project]"].QueryHierarchy;
QueryFolder queryFolder = queryRoot["Shared Queries"] as QueryFolder;
QueryDefinition qd = queryFolder["PBIS"] as QueryDefinition;
string tt = qd.QueryText;
关于使用Extended Client package的调用查询REST API,您可以参考这个简单的代码:
var u = new Uri("[collection url]");
VssCredentials c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.WindowsCredential(new NetworkCredential("v-stache", "Hua543@Hua543", "fareast")));
var connection = new VssConnection(u, c);
var workitemClient = connection.GetClient<WorkItemTrackingHttpClient>();
var result = workitemClient.QueryByWiqlAsync(new Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models.Wiql() { Query = "select[System.Id] from WorkItems where [System.TeamProject] = 'ScrumStarain2' and [System.WorkItemType] = 'Product Backlog Item' and [System.State] <> ''" }, "ScrumStarain2").Result;
以上是关于将TFS REST API与存储的查询一起使用时是否会编译?的主要内容,如果未能解决你的问题,请参考以下文章
通过 REST API 将测试结果发布到 TFS 2018 测试用例
使用 TFS 2015 REST API 进行队列构建的 409 冲突响应
为啥用于获取 TFVC 变更集的 TFS Rest API 仅返回 256 个项目?