Today one of my colleagues in our ALM team asked for help. For a customer we upgraded their TFS environment to TFS 2017. One of the changes we had to do along the way was replacing the existing MultiValue control by a newer version(https://github.com/Microsoft/vsts-extension-multivalue-control).
We followed the steps as mentioned here(https://github.com/Microsoft/vsts-extension-multivalue-control/blob/master/xmldetails.md) but the control didn’t appear.
Here is the template XML that we were using(I removed some content):
<?xml version="1.0" encoding="IBM437"?> | |
<witd:WITD application="Work item type editor" version="1.0" xmlns:witd="http://schemas.microsoft.com/VisualStudio/2008/workitemtracking/typedef"> | |
<WORKITEMTYPE name="Product Backlog Item"> | |
<DESCRIPTION>Tracks an activity the user will be able to perform with the product.</DESCRIPTION> | |
<FIELDS> | |
</FIELDS> | |
<WORKFLOW> | |
</WORKFLOW> | |
<FORM> | |
<Layout HideControlBorders="true" HideReadOnlyEmptyFields="true"> | |
<Group Margin="(4,0,0,0)"> | |
</Group> | |
</Layout> | |
<WebLayout> | |
<!--**********************************Work Item Extensions*************************** | |
... | |
Extension: | |
Name: vsts-extensions-multivalue-control | |
Id: ms-devlabs.vsts-extensions-multivalue-control | |
Control contribution: | |
Id: ms-devlabs.vsts-extensions-multivalue-control.multivalue-form-control | |
Description: A work item form control which allows selection of multiple values. | |
Inputs: | |
Id: FieldName | |
Description: | |
Type: WorkItemField | |
Field Type: String; PlainText; HTML | |
Data Type: String | |
IsRequired: true | |
Id: Values | |
Description: Values can be user provided or from suggested values of the backing field | |
Data Type: String | |
IsRequired: false | |
Note: For more information on work item extensions use the following topic: http://go.microsoft.com/fwlink/?LinkId=816513 | |
--> | |
<Extensions> | |
<Extension Id="ms-devlabs.vsts-extensions-multivalue-control" /> | |
</Extensions> | |
<!--**********************************Work Item Extensions*************************** --> | |
<SystemControls> | |
<Control Type="FieldControl" FieldName="System.Title" EmptyText="<Enter title here>" /> | |
<Control Label="Area" Type="WorkItemClassificationControl" FieldName="System.AreaPath" /> | |
<Control Label="Iteration" Type="WorkItemClassificationControl" FieldName="System.IterationPath" /> | |
<Control Label="Stat&e" Type="FieldControl" FieldName="System.State" /> | |
<Control Label="Reason" Type="FieldControl" FieldName="System.Reason" /> | |
<Control Label="Assi&gned To" Type="FieldControl" FieldName="System.AssignedTo" /> | |
<Control Label="Links" Type="LinksControl" Name="Links" /> | |
<Control Label="Comments" Type="WorkItemLogControl" FieldName="System.History" /> | |
<Control Label="Attachments" Type="AttachmentsControl" Name="Attachments" /> | |
</SystemControls> | |
<Page Label="Details" LayoutMode="FirstColumnWide"> | |
<Section> | |
<Group Label="Impacted Platforms"> | |
<ControlContribution Label="Label" Id="ms-devlabs.vsts-extensions-multivalue-control.multivalue-form-control"> | |
<Inputs> | |
<Input Id="FieldName" Value="ImpactedPlatforms" /> | |
</Inputs> | |
</ControlContribution> | |
</Group> | |
</Section> | |
</Page> | |
</WebLayout> | |
</FORM> | |
</WORKITEMTYPE> | |
</witd:WITD> |
Although we couldn’t see any difference with the steps mentioned above, it didn’t work.
When I had a look I noticed that the extension is only registered in the WebLayout part of the Form.
Remark: In TFS you always had 2 layouts(a layout and a weblayout), the first one applies when opening a work item in Visual Studio or Test Manager, the weblayout applies when opening a workitem in the browser.
We first tried to add the extension to the layout part as well, but this didn’t work and resulted in some errors.
Then I had an idea, TFS 2017 offers a new Work Item experience. As mentioned here(https://www.visualstudio.com/en-us/docs/work/reference/weblayout-xml-elements) the WebLayout element is only applied on the new work item experience! This explains why our changes didn’t show up.
The new Work Item experience is an opt-in experience that should be enabled by a collection administrator. After enabling it, our Multivalue control appeared on the form…
Remark: For TFS 2017, the new form is automatically available when you add team projects to a new collection.