【问题标题】:TFS 2018 WebLayout extension forcing all contributions from extension to displayTFS 2018 WebLayout 扩展强制所有贡献从扩展显示
【发布时间】:2018-06-06 23:55:39
【问题描述】:

我们正在将本地 TFS2015 迁移到 TFS2018U1,我正在与新的 WebLayout 定义作斗争。

我们有一些高度自定义的工作项类型来跟踪我们的大型项目,这是一种高于 Epic 级别的自定义工作项类型。这些 WIT 中的状态引擎很复杂,所以我想在显示工作流的工作项中显示一个图表。简单地嵌入带有 CDATA 的 a 并没有给我足够的控制来调整包含图像的大小,所以我编写了一个简单的扩展来让我更好地控制这个显示。扩展的内容工作正常;我的问题是工作项 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 布局的随机部分?

【问题讨论】:

  • 您是否先以旧形式自定义工作项,然后升级到 TFS 2018 并转移到新形式?还是直接自定义新的表单工作项?
  • 旧的工作项不支持 ,所以我添加了它并将其导入到我们的测试 2018 实例中。 2015 和 2018 变体之间的唯一区别是整个 部分和这个新扩展。

标签: tfs


【解决方案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>

【讨论】:

  • 这是否记录在某处?还是您偶然发现的?
  • 这是很久以前的事了,我想我只是偶然发现了解决方案。不过我真的不记得了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多