使用TFS SDK更新工作项的超链接

本文关键字:超链接 工作 更新 TFS SDK 使用 | 更新日期: 2023-09-27 18:10:52

我必须在TFS中添加到我的工作项的超链接中更新一些主机名。

我的想法是这样的:

TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("http://mytfs"));
WorkItemStore wis = tfs.GetService<WorkItemStore>();
WorkItem wi = wis.GetWorkItem(12345);
foreach (Hyperlink link in wi.Links.OfType<Hyperlink>())
{
    link.Location = link.Location.Replace("oldHostname", "newHostname");
}
wi.Save();
但不幸的是,这不起作用,因为Location属性是只读的。

是否有其他方法来更新它?

<标题>编辑:

现在我试图删除旧的并添加新的超链接到工作项,但当以下foreach循环第二次开始时,我得到一个错误。

TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("http://mytfs"));
WorkItemStore wis = tfs.GetService<WorkItemStore>();
WorkItem wi = wis.GetWorkItem(14612);
foreach (Hyperlink hyperlink in wi.Links.OfType<Hyperlink>())
{
    if (hyperlink.Location.Contains("oldHostname"))
    {
        Hyperlink newHyperlink = new Hyperlink(hyperlink.Location.Replace("oldHostname", "newHostname"));
        wi.Links.Remove(hyperlink);
        wi.Links.Add(newHyperlink);
    }
}
if(wi.isDirty()) wi.Save();

包含foreach的行被标记,错误是:

An unhandled exception of type 'System.InvalidOperationException' occurred in Microsoft.TeamFoundation.WorkItemTracking.Client.dll
Additional information: Operation is not valid due to the current state of the object.

如何解决这个问题?

使用TFS SDK更新工作项的超链接

.Replace倾向于返回一个新的字符串,但不更新现有的值。所以你需要取结果:

link.Location = link.Location.Replace("oldHostname", "newHostname");

但是由于.Location是只读的,您必须删除旧链接并创建一个新的链接来更新位置