如何使用户能够在本地 TFS 2015 中编辑 HtmlFieldControl 源?

How to enable users to edit HtmlFieldControl source in TFS 2015 on-premise?

如果您在编辑工作项时将图像插入 'Description' HtmlFieldControl,则 html img src 属性将具有绝对 url,如 <img src='http://mytfsserver:8080/tfs/dc/_api/_wit/DownloadAttachment?fileGuid=03e65645..." .. >

当使用反向代理时,图像将不会显示,在反向代理中,我们公司外部的用户使用像“https://tfs.mycompany.com/tfs', because from outside there is no access to 'http://mytfsserver:8080/tfs

这样的 url 访问我们的 tfs

我现在的想法是将绝对值 url 转换为相对值,例如 <img src='/tfs/dc/_api/_wit/DownloadAttachment?fileGuid=03e65645..." .. >。手动编辑 System.Description 字段的 html 并保存后,图像从 tfs 内部用户以及使用反向代理的外部用户都能正确显示。

我发现 VSTS 扩展可以对 onFieldChanged 事件做出反应,我想在 System.Descripton 字段的 html 中相应地更改 img src。

自 TFS 2017 以来,有一个名为 'WebLayout and Control elements' 的新元素,这将是完美的方法。不幸的是,我们公司内部仍然使用TFS 2015,更新将在今年年底完成。

所以我的问题是,我是否可以使用现有的方式开发功能以提供自动或手动将绝对替换为相对url?

我发现没有办法使用 VSTS 扩展 ON 现有的工作项表单与 TFS 2015。而且似乎不可能增强默认的 HtmlFieldControl。或者我可以编写自定义的 HtmlFieldControl 吗?

无法将 'FieldControl' for System.Description 之类的另一个控件放到 wit 窗体上,它不受支持。在 HtmlFieldControl 中插入图像后总是手动编辑 html 会很乏味,保存它,重新加载并在普通的 FieldControl 中编辑它。但即使这样也可以作为解决方法接受。

终于轻松了:

var descriptionField = that._workItem.getField("System.Description");
var descriptionHTML = descriptionField._getValue().toString();
...
descriptionHTML = descriptionHTML.replace(toReplace,replaceWith);
descriptionField.setValue(descriptionHTML);