使用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.
如何解决这个问题?
标题>.Replace
倾向于返回一个新的字符串,但不更新现有的值。所以你需要取结果:
link.Location = link.Location.Replace("oldHostname", "newHostname");
但是由于.Location
是只读的,您必须删除旧链接并创建一个新的链接来更新位置