【发布时间】:2014-07-01 10:03:50
【问题描述】:
我必须更新在 TFS 中添加到我的 WorkItems 中的超链接中的一些主机名。
我的想法是这样的:
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 属性是只读的。
还有其他方法可以更新吗?
编辑:
现在我正在尝试删除旧的超链接并将新的超链接添加到 WorkItem,但是当下面的 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.
我该如何解决这个问题?
【问题讨论】: