首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据WorkItem ID获取TFS WorkItem URL

如何根据WorkItem ID获取TFS WorkItem URL
EN

Stack Overflow用户
提问于 2019-08-21 18:55:37
回答 2查看 828关注 0票数 2

我可以通过编程方式将bug添加到TFS中,

代码语言:javascript
复制
var tfsURI = new Uri("http://test:8080/tfs");
var networkCredential1 = new NetworkCredential("test", "test!");

ICredentials credential = (ICredentials)networkCredential1;
Microsoft.VisualStudio.Services.Common.WindowsCredential winCred = new Microsoft.VisualStudio.Services.Common.WindowsCredential(credential);
VssCredentials vssCredentials = new VssCredentials(winCred);

using (TfsTeamProjectCollection collection = new TfsTeamProjectCollection(tfsURI, vssCredentials))
{
    collection.EnsureAuthenticated();
    WorkItemStore workItemStore = collection.GetService<WorkItemStore>();
    Project teamProject = workItemStore.Projects["Test"];
    WorkItemType workItemType = teamProject.WorkItemTypes["Bug"];

    WorkItem Defect = new WorkItem(workItemType);
    FileInfo fi = new FileInfo(@"C:\\Document.docx");
    Attachment tfsAttachment = new Attachment(fi.FullName);
    Defect.Attachments.Add(tfsAttachment);

    Defect.Title = "Testing from VS to TFS Bug";
    Defect.Description = "Testing from VS to entered Bug in to TFS.";
    Defect.Fields["Assigned To"].Value = "Test";

    Defect.Save();
} 

我新创建了WorkItem ID,Defect.ID为我提供了workitemID。

如何通过传递ID获得新创建的WOrkItem的URL。让我知道是否有可用的API?我需要新创建的WorkItem的HTML,以便任何人点击WorkItem时,创建的WorkItem将是开放的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-22 17:23:46

经过大量的研究,我找到了解决办法,可能会对未来的人有所帮助:

代码语言:javascript
复制
var tfsURI = new Uri("http://test:8080/tfs");
var networkCredential1 = new NetworkCredential("test", "test!");

    ICredentials credential = (ICredentials)networkCredential1;
    Microsoft.VisualStudio.Services.Common.WindowsCredential winCred = new Microsoft.VisualStudio.Services.Common.WindowsCredential(credential);
    VssCredentials vssCredentials = new VssCredentials(winCred);

    using (TfsTeamProjectCollection collection = new TfsTeamProjectCollection(tfsURI, vssCredentials))
    {
        collection.EnsureAuthenticated();
        TswaClientHyperlinkService hyperlinkService = 
           collection.GetService<TswaClientHyperlinkService>();
        String TFSurl = hyperlinkService.GetWorkItemEditorUrl(17648).ToString(); //17648 WorkItem ID
    }
票数 0
EN

Stack Overflow用户

发布于 2019-08-22 09:43:41

可以使用Rest直接返回单个工作项。

GET https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/{id}?api-version=5.1

但是,这只会为所创建的bug获取json数据的url,而不是bug的HTML页面的URL。例如,我得到的输出低于

代码语言:javascript
复制
https://tfsurl:8080/_apis/wit/workItems/workitemID

当我在浏览器中加载上面的链接时,我得到了JSON数据,而不是我创建的工作项的HTML页面。

猜测您希望在web门户中获取HTML的url。

工作项目/编辑/172/

在我的例子中,是这样的,在这里,DefaultCollection是集合名,PatrickProject是项目名。在本例中,我使用了这个url并去掉了id '172‘,并使用了新创建的工作项的ID。这将返回到工作项HTML页面的URL。

所以这是一个固定的格式,如果您有新创建的WorkItem ID和集合名称、项目名称,您只需要遵循上面的格式并更改工作项ID的最后一个值,就这样,忽略您创建的工作项类型。

希望这能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57597711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档