Расширение TFS 2018 WebLayout заставляет все вклады от расширения до отображения - PullRequest
0 голосов
/ 06 июня 2018

Мы переходим с локальной TFS2015 на TFS2018U1, и я борюсь с новым определением WebLayout.

У нас есть несколько сильно настроенных типов рабочих элементов для отслеживания наших больших проектов, настраиваемый тип рабочих элементов.выше эпического уровня.Механизм состояния в этих WIT является сложным, поэтому я хотел бы показать диаграмму в рабочем элементе, которая показывает рабочий процесс.Простое встраивание с CDATA imageне дало мне достаточного контроля для настройки размера содержащего изображения, поэтому я написал простое расширение, чтобы дать мне больше контроля над этим дисплеем.Содержание расширения работает правильно;Моя проблема связана с неожиданным поведением в рабочем элементе 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>

Моя проблема заключается в том, что два неиспользуемых вклада расширения добавляются в каждый тип рабочего элемента.Например, когда я просматриваю рабочий элемент Project Type 1, я вижу рабочий процесс / изображение Project Type 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 для добавления неиспользуемых расширений в случайные части моего веб-макета?

1 Ответ

0 голосов
/ 06 июня 2018

Кажется, что когда определение типа рабочего элемента ссылается на расширение, все вклады в этом расширении будут отображаться в 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>
...