我们正在将本地TFS2015移至TFS2018U1,我正在使用新的WebLayout定义。
我们有一些高度定制的工作项类型来跟踪我们的大型项目,这是Epic级别上方的自定义工作项类型。这些WIT中的状态引擎很复杂,因此我想在显示工作流的工作项中显示一个图表。只需嵌入CDATA< img>没有给我足够的控制来调整包含图像的大小,所以我写了一个简单的扩展,让我更多地控制这个显示。扩展的内容运作正常;我的问题是工作项WebLayout中的意外行为。
我们有三种项目类型,所以我的扩展在vss-extension.json中有三个贡献(名称已被更改):
"contributions": [
{
"id": "projects.type1.workflow-group",
"type": "ms.vss-work-web.work-item-form-group",
"targets": [
"ms.vss-work-web.work-item-form"
],
"properties": {
"name": "Project Type 1 Workflow",
"uri": "project-type-1-workflow-group.html",
"height": 800
}
}, {
"id": "projects.type2.workflow-group",
"type": "ms.vss-work-web.work-item-form-group",
"targets": [
"ms.vss-work-web.work-item-form"
],
"properties": {
"name": "Project Type 2 Workflow",
"uri": "project-type-2-workflow-group.html",
"height": 800
}
}, {
"id": "projects.type3.workflow-group",
"type": "ms.vss-work-web.work-item-form-group",
"targets": [
"ms.vss-work-web.work-item-form"
],
"properties": {
"name": "Project Type 3 Workflow",
"uri": "project-type-3-workflow-group.html",
"height": 800
}
}
我的三个不同的工作项类型定义然后分别调用其中一个扩展名:
<WebLayout>
<Extensions>
<Extension Id="MyAccount.web-layout" />
</Extensions>
<Page Label="Page1">
...
</Page>
<Page Label="Page2">
...
</Page>
<Page Label="Page3">
<Section>
...
</Section>
<Section>
<GroupContribution Id="MyAccount.web-layout.projects.project1.workflow-group" Label="Workflow" />
</Section>
</Page>
...
</WebLayout>
我的问题是两个未使用的扩展贡献被注入到每个工作项类型中。例如,当我查看项目类型1工作项时,我看到项目类型1工作流/图像我想要它,但其他两个工作流/图像被注入WebLayout的第一页,尽管工作项类型定义不参考它们;当我导入工作项类型定义时,它们不存在,当我将它们导出时,它们会神奇地出现。
当我从TFS导出工作项类型定义时,有两个GroupContribution标记注入到第一页的第二部分(第一部分是System.Description,它也是由TFS注入的,这是一个单独的问题):
<GroupContribution Label="Project Type 2 Workflow" Id="MyAccount.web-layout.projects.project2.workflow-group" />
<GroupContribution Label="Project Type 3 Workflow" Id="MyAccount.web-layout.projects.project3.workflow-group" />
我不想为我想要使用的每个GroupContribution构建单独的扩展;我可以创建一个单独的GroupContribution,动态地确定要显示的图像,但如果我想开始添加其他GroupContribution(或PageContribution等)内容,我担心我会遇到同样的问题。
如何使用具有多个贡献的扩展,而不使MS / TFS将未使用的扩展注入我的Web布局的随机部分?
答案 0 :(得分:1)
似乎当工作项类型定义引用扩展时,该扩展中的所有贡献都将出现在WebLayout中,无论它们是否在WebLayout定义中明确使用。但是,您可以明确引用您不想查看/使用的那些,并隐藏它们:
<WebLayout>
<Extensions>
<Extension Id="MyAccount.web-layout" />
</Extensions>
<Page Label="Page1">
...
</Page>
<Page Label="Page2">
...
</Page>
<Page Label="Page3">
<Section>
...
</Section>
<Section>
<GroupContribution Id="MyAccount.web-layout.projects.project1.workflow-group" Label="Workflow" />
<GroupContribution Id="MyAccount.web-layout.projects.project2.workflow-group" Label="Workflow" Visible="false" />
<GroupContribution Id="MyAccount.web-layout.projects.project3.workflow-group" Label="Workflow" Visible="false" />
</Section>
</Page>
...
</WebLayout>