添加和自定义工作项类型
可以添加和自定义工作项的类型,以便用于特定团队项目。 对于每个工作项类型,您都可添加字段、状态和转换,并更改窗体布局。 对于为类型定义的每个字段,您都可以添加规则和定义允许值。
在本演练中,修改类型的每个组件时,会通过打开该类型的新工作项将更改导入团队项目并验证更改。
主题内容
若要添加和自定义工作项类型,请执行以下过程:
创建名为 WITLab 的团队项目
查看“Task”类型的工作项窗体
导出“Task”类型
复制“Task”类型并将其重命名为“Special Task”类型
导入“Special Task”类型并检查更改
将名为“Category”的新字段添加到“Special Task”类型
将规则添加到“Category”字段
为“Category”字段创建选取列表
更改“Special Task”类型的工作流
更改“Special Task”类型的窗体布局
系统必备
若要完成本演练中的步骤,必须满足以下条件:
您必须拥有已安装团队资源管理器的 Visual Studio 的副本,并与 Team Foundation Server 相连接。 有关更多信息,请参见在 Team Foundation Server 中连接团队项目。
如果您可以建立与 Team Foundation Server 的连接,并且具有适当的权限集,则可以通过命令提示符、批处理文件或脚本文件对工作项类型进行基本的自定义。
必需的权限
若要执行此过程,您必须是**“Team Foundation Administrators (Team Foundation 管理员)”组的成员或项目的“Project Administrators (项目管理员)”**组的成员。 有关更多信息,请参见Team Foundation Server 权限。
创建名为 WITLab 的团队项目
创建团队项目
启动 Visual Studio。
在 Visual Studio 中,在**“工具”菜单上,单击“连接到 Team Foundation Server”**。
备注
如果您看不到此选项,表示您尚未安装团队资源管理器。必须先安装团队资源管理器,然后才能选择连接到 Team Foundation Server。
在**“连接到团队项目”对话框中,从“Team Foundation Server”**列表中选择一个运行 Team Foundation Server 的服务器。
在**“连接到团队项目”对话框中,从“Team Foundation Server”**列表中选择包含要向其添加团队项目的团队项目集合的服务器。
备注
如果该下拉列表为空,请单击“服务器”按钮以手动输入服务器连接设置。请联系 Team Foundation 管理员或团队项目管理员获取连接设置。
从**“目录”**列表中单击要将团队项目添加到的项目集合的名称。
单击**“连接”**。
在**“文件”菜单上,单击“新建团队项目”**。
备注
如果没有使用项目管理环境设置,请在“文件”菜单上指向“新建”,然后单击“团队项目”。
**“新建团队项目”**向导出现。
备注
如果您尚未连接到 Team Foundation Server,系统将会提示您立即连接到一个此类服务器。检查步骤 2 到 6。
在**“指定团队项目设置”页上,在“团队项目的名称是什么?”下,键入 WITLab,然后单击“下一步”**。
在**“选择过程模板”页上,在“应使用哪个过程模板来创建团队项目?”下面,单击“MSF for Agile Software Development - <版本号>”,然后单击“完成”**。
创建团队项目可能需要几分钟时间。
当**“已创建团队项目”页出现时,清除“启动过程指南”框,然后单击“关闭”**。
名为“WITLab”的新团队项目在团队资源管理器中显示为一个节点。
查看“Task”类型的工作项窗体
前提条件:您必须已完成创建名为 WITLab 的团队项目。 “WITLab”团队项目在团队资源管理器中显示为一个节点。
查看工作项窗体
启动 Visual Studio 并打开团队资源管理器。
在团队资源管理器中,展开 WITLab 团队项目,并等待几秒钟以便加载其文件夹。
在团队项目中,右击**“工作项”节点,指向“添加工作项”,然后单击“Task”**。
表示新“Task”工作项的窗体随即出现。 该表单的有些字段包含默认值。 在本主题后面的内容中,您可以自定义用于创建此工作项的“Task”工作项类型。
导出“Task”类型
前提条件:您必须已完成创建名为 WITLab 的团队项目。 “WITLab”团队项目在团队资源管理器中显示为一个节点。
导出工作项类型
打开一个 Visual Studio 命令提示。
在命令提示符处键入下面的命令,然后按 Enter:
witadmin exportwitd /collection:http://服务器名称:端口/虚拟目录名称/连接名称 /p:WITLab /n:Task /f:"文件路径\task.xml"
这会将“Task”工作项类型从 Team Foundation Server 导出到为“文件路径”指定的文件夹的 task.xml 文件中。 导出操作完成时会出现以下内容:
Work item type export complete.
(可选)若要查看“Task”工作项类型的 XML 定义,请在命令提示符处键入 "文件路径**\ task.xml"**,然后按 Enter。
复制“Task”类型并将其重命名为“Special Task”类型
前提条件:您必须已经完成导出“Task”类型过程。
复制并重命名类型
在 Visual Studio 中,单击**“文件”,然后单击“打开文件”**。
将显示**“打开文件”**对话框。
在**“查找范围”**之下,移动到您导出该文件的位置。
如果要修改工作项类型以自定义过程模板,请移动到下载该过程模板的位置。
备注
如果您运行的是 Windows Vista,则可能不具有某些文件夹的权限集。如果尝试将工作项类型导出到您没有权限集的位置,注册表虚拟化技术将自动重定向导出的文件,并将其保存到虚拟存储区。若要避免此重定向操作,可以将该文件导出到您拥有权限集的位置。有关注册表虚拟化的更多信息,请参见 Microsoft 网站:Registry Virtualization(注册表虚拟化)和 Windows Vista 中常见的文件和注册表虚拟化问题。
单击 task.xml 文件,然后单击**“打开”。 出现有关行尾的提示时,单击“否”**。
这将打开 task.xml,即包含“Task”工作项类型的定义的 XML 文件。
定位到 XML 文件中的以下元素。
<WORKITEMTYPE name="Task">
将 name 特性的值更改为 Special Task。
<WORKITEMTYPE name="Special Task">
将更改保存到新的 XML 文件。 为此,请在 Visual Studio 的**“文件”菜单上,单击“另存 task.xml 为”**。
将显示**“另存文件为”**对话框。
对于**“文件名”,请键入 specialtask.xml,然后单击“保存”**。
导入“Special Task”类型并检查更改
前提条件:您必须已经完成复制“Task”类型并将其重命名为“Special Task”类型过程。
导入新类型
打开一个 Visual Studio 命令提示。
将“Special Task”类型导入 Team Foundation Server。 为此,请在 Visual Studio 命令提示符处键入下面的命令,然后按 Enter:
witadmin importwitd /collection:http://服务器名称:端口/虚拟目录名称/连接名称 /p:WITLab /f:"文件路径\specialtask.xml"
这会将“Special Task”类型导入 Team Foundation Server 上的 WitLab 项目。 导入操作完成时会显示下面的内容:
Work item type import complete.
在团队资源管理器中,选择团队项目,然后在**“视图”**菜单上,单击 “刷新”,从服务器下载最新的更新。
这些更新包括您刚导入的新“Special Task”类型。 请等待几秒钟,直到所有的节点加载完毕。 正在加载中的节点显示**“正在工作”**。
创建“Special Task”工作项。 为此,请右击**“工作项”节点,指向“添加工作项”,然后单击“Special Task”**。
此工作项是从您已更改并导入的工作项类型创建的。
将名为“Category”的新字段添加到“Special Task”类型
前提条件:您必须已经完成复制“Task”类型并将其重命名为“Special Task”类型过程。
添加字段
打开包含“Special Task”工作项类型定义的文件。 为此,请在 Visual Studio 中单击标记为**“SpecialTask.xml”**的选项卡。
找到 XML 文件的以下节:
<FIELDS>
若要创建一个名为“Category”的字符串字段和用于工具提示的帮助文本,请键入 FIELD 和 HELPTEXT 元素,如下面的示例所示:
<FIELDS> <FIELD name="Category" refname="MyCompany.MyProcess.Category" type="String"> <HELPTEXT>Describes the category to which this special task belongs.</HELPTEXT> </FIELD>
备注
“引用名称”(或 refname)是字段的编程名称。所有其他规则都应该引用此 refname。有关更多信息,请参见工作项跟踪对象的命名约定。
找到 XML 文件中描述工作项窗体的部分。
<FORM>
找到 <FORM> 节中的下列行:
<Group Label="Classification"> <Column PercentWidth="100"> <Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="Area" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="Iteration" LabelPosition="Left" /> </Column> </Group>
若要插入一个控件来显示 Category 字段,请键入 Control 元素,且 Type="FieldControl" 跟在 System.IterationPath 控件后面,如下面的示例所示:
<Group Label="Classification"> <Column PercentWidth="100"> <Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="Area" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="Iteration" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="MyCompany.MyProcess.Category" Label="Category" LabelPosition="Left" /> </Column> </Group>
在**“文件”菜单上,单击“保存”**,将更改保存到 XML 文件中。
将已更改的“Special Task”类型导入 Team Foundation Server。 为此,请重复以下过程中提供的步骤:导入“Special Task”类型并检查更改。
请注意表单上新的**“Category”**字段。 将鼠标指针移到该字段的标签上方以查看工具提示。
单击**“关闭”关闭新的“Special Task”。 提示您保存工作项时,请单击“否”**。
将规则添加到“Category”字段
前提条件:您必须已经完成添加名为“Category”的新字段过程。
向字段添加规则
打开包含“Special Task”工作项类型定义的文件。 为此,请在 Visual Studio 中单击标记为**“SpecialTask.xml”**的选项卡。
找到 XML 文件的 <FIELDS> 部分,接着在该部分找到“Category”字段。
若要使 Category 成为必选字段,请添加 REQUIRED 元素,如下面的示例所示:
<FIELD name="Category" refname="MyCompany.MyProcess.Category" type="String" reportable="dimension"> <HELPTEXT>Describes the category to which this special task belongs.</HELPTEXT> <REQUIRED /> </FIELD>
在**“文件”菜单上,单击“保存”**,将更改保存到 XML 文件中。
将更改后的“Special Task”工作项类型导入 Team Foundation Server。 为此,请重复本主题前面所述过程中提供的步骤:导入“Special Task”类型并检查更改。
witadmin importwitd /collection:http://服务器名称:端口/虚拟目录名称/连接名称 /p:WITLab /f:"文件路径\specialtask.xml"
**“Category”**字段现在已突出显示,指示该字段是必需字段。
选择“Special Task”工作项上的**“标题”**字段并键入“示例任务”。
在工具栏上,单击**“保存”**以保存该工作项。
此时将显示一个错误对话框,指出**“Category”字段不能为空。 单击“确定”**关闭对话框。
在“Special Task”工作项上的**“Category”**字段中,键入“A”类别。
单击**“保存”**以保存该工作项。
用来保存工作项的选项现在可用。
单击**“关闭”**关闭新的“Special Task”。
为“Category”字段创建选取列表
前提条件:您必须已经完成将规则添加到“Category”字段过程。
创建选取列表
打开包含“Special Task”工作项类型定义的文件。 为此,请在 Visual Studio 中单击标记为**“SpecialTask.xml”**的选项卡。
找到 XML 文件的 <FIELDS> 部分,接着在该部分找到“Category”字段。
若要添加 Category 字段允许值的列表,请插入 ALLOWEDVALUES 元素以及每个允许值对应的 LISTITEM 子元素。
<FIELD name="Category" refname="MyCompany.MyProcess.Category" type="String" reportable="dimension"> <HELPTEXT>Describes the category to which this special task belongs.</HELPTEXT> <REQUIRED /> <ALLOWEDVALUES> <LISTITEM value="Process Management" /> <LISTITEM value="Planning" /> <LISTITEM value="Execution" /> <LISTITEM value="Review" /> </ALLOWEDVALUES> </FIELD>
若要使 Category 成为可选字段,请删除 ALLOWEDVALUES 元素上方列出的 REQUIRED 元素。
<FIELD name="Category" refname="MyCompany.MyProcess.Category" type="String" reportable="dimension"> <HELPTEXT>Describes the category to which this special task belongs.</HELPTEXT> <REQUIRED /> <ALLOWEDVALUES> <LISTITEM value="Process Management" /> <LISTITEM value="Planning" /> <LISTITEM value="Execution" /> <LISTITEM value="Review" /> </ALLOWEDVALUES> </FIELD>
单击**“保存”**将更改保存到该 XML 文件。
将更改后的“Special Task”工作项类型导入 Team Foundation Server。 为此,请重复本主题前面所述过程中提供的步骤:导入“Special Task”类型并检查更改。
创建“Special Task”工作项。 为此,请右击**“工作项”节点,指向“添加工作项”,然后单击“Special Task”**。
此工作项是从您已更改并导入的工作项类型创建的。
单击“Category”字段的列表框。
请注意,该字段现在只支持由 ALLOWEDVALUES 规则指定的值。
备注
下拉列表中的允许值始终按字母顺序出现,与 XML 文件中的 LISTITEM 元素的顺序无关。
单击**“关闭”关闭新的“Special Task”。 提示您保存工作项时,请单击“否”**。
更改“Special Task”类型的工作流
前提条件:您必须已经完成为“Category”字段创建选取列表过程。
更改工作流
打开包含“Special Task”工作项类型定义的文件。 为此,请在 Visual Studio 中单击标记为**“SpecialTask.xml”**的选项卡。
在该 XML 文件的 <WORKFLOW> 部分中,找到工作项类型的工作流定义,如下面的 XML 所示:
<WORKFLOW> <STATES> <STATE value="Active"> <FIELDS> <FIELD refname="Microsoft.VSTS.Common.ClosedDate"> <EMPTY /> </FIELD> <FIELD refname="Microsoft.VSTS.Common.ClosedBy"> ...
请注意,其中只定义了两个状态:“Active”和“Closed”。 还定义了这两个状态之间的转换,以及一个从 null 状态(该状态在创建工作项时使用)开始的起始转换。
若要向类型定义中添加 Unapproved 状态,请在活动状态上方插入另一个 STATE 元素。
<WORKFLOW> <STATES> <STATE value="Unapproved"> </STATE> <STATE value="Active"> <FIELDS> <FIELD refname="Microsoft.VSTS.Common.ClosedDate"> <EMPTY /> </FIELD> <FIELD refname="Microsoft.VSTS.Common.ClosedBy"> ...
创建 null 状态与 Unapproved 状态之间的转换。 为此,请找到工作流定义中针对转换的部分。 然后,插入一个 TRANSITION 元素使未指定状态成为 Unapproved 状态。 由于此更改,该类型的所有新工作项将从 Unapproved 状态开始,并且默认原因为“New”(新建)。
<TRANSITIONS> <TRANSITION from="" to="Unapproved"> <REASONS> <DEFAULTREASON value="New" /> </REASONS> </TRANSITION> <TRANSITION from="" to="Active"> <REASONS> <DEFAULTREASON value="New" /> </REASONS> <FIELDS> <FIELD refname="Microsoft.VSTS.Common.ActivatedBy"> <COPY from="currentuser" /> </FIELD> <FIELD refname="Microsoft.VSTS.Common.ActivatedDate"> <COPY from="clock" /> </FIELD> <FIELD refname="System.AssignedTo"> <COPY from="currentuser" /> </FIELD> </FIELDS> </TRANSITION>
删除未指定为活动状态的 TRANSITION 元素及其所有子元素,如下面的示例所示。 执行此步骤是因为只能存在一个起始转换,而您要使用名为“Ported”的起始转换(该转换在下一步中定义)。
<TRANSITIONS> <TRANSITION from="" to="Unapproved"> <REASONS> <DEFAULTREASON value="New" /> </REASONS> </TRANSITION> <TRANSITION from="" to="Active"> <REASONS> <DEFAULTREASON value="New" /> </REASONS> <FIELDS> <FIELD refname="Microsoft.VSTS.Common.ActivatedBy"> <COPY from="currentuser" /> </FIELD> <FIELD refname="Microsoft.VSTS.Common.ActivatedDate"> <COPY from="clock" /> </FIELD> <FIELD refname="System.AssignedTo"> <COPY from="currentuser" /> </FIELD> </FIELDS> </TRANSITION>
通过在默认原因后插入一个 REASON 元素,为起始转换添加一个“Ported”(移植)原因。 如果您进行此更改,则用户可以验证工作项是新的还是从另一个跟踪系统移植过来的。
<TRANSITIONS> <TRANSITION from="" to="Unapproved"> <REASONS> <DEFAULTREASON value="New" /> <REASON value="Ported" /> </REASONS> </TRANSITION> ...
在下面的示例中插入 COPY 规则。 此规则使创建工作项的用户名成为**“指派给”**字段的默认值,而且此规则只能在起始转换期间进行评估。
<TRANSITIONS> <TRANSITION from="" to="Unapproved"> <REASONS> <DEFAULTREASON value="New" /> <REASON value="Ported" /> </REASONS> <FIELDS> <FIELD refname="System.AssignedTo"> <COPY from="currentuser" /> </FIELD> </FIELDS> </TRANSITION> ...
备注
在其他 <TRANSITION> 或 <STATE> 元素下面插入此规则会将此规则的作用范围限定于其他转换或状态。
若要创建一个从 Unapproved 状态到 Active 状态的转换,请插入 TRANSITION 元素及其子元素,如下面的示例所示。 由于此更改,当某个“Special Task”被批准时,它可以执行此转换。
<TRANSITIONS> <TRANSITION from="" to="Unapproved"> <REASONS> <DEFAULTREASON value="New" /> <REASON value="Ported" /> </REASONS> <FIELDS> <FIELD refname="System.AssignedTo"> <COPY from="currentuser" /> </FIELD> </FIELDS> </TRANSITION> <TRANSITION from="Unapproved" to="Active"> <REASONS> <DEFAULTREASON value="Approved" /> </REASONS> </TRANSITION> <TRANSITION from="Active" to="Closed"> <REASONS> <DEFAULTREASON value="Completed" /> <REASON value="Deferred" /> <REASON value="Obsolete" /> <REASON value="Cut" /> </REASONS> ...
单击**“保存”**将更改保存到该 XML 文件。
将更改后的“Special Task”工作项类型导入 Team Foundation Server。 为此,请重复以下过程中提供的步骤:导入“Special Task”类型并检查更改。
请注意,初始**“状态”现在为“Unapproved”,并且“原因”默认为“New”。 此外,“指派给”值默认为您的帐户名称。 单击“原因”字段可以看到一个列表框,其中列出了原因“New”和“Ported”**。
在**“标题”字段中,键入标题,然后单击“保存”保存该工作项。 等待保存操作完成(由状态栏上的“项已保存”**指示)。
在**“状态”字段中,选择“Active”值以批准该工作项并再次转换它。 请注意,“原因”字段默认为“Approved”**。
单击**“保存”**保存此转换。
单击**“关闭”**关闭该“Special Task”。
更改“Special Task”类型的窗体布局
前提条件:您必须已经完成更改“Special Task”类型的工作流过程。
更改表单布局
打开包含“Special Task”工作项类型定义的文件。 为此,请在 Visual Studio 中单击标记为**“SpecialTask.xml”**的选项卡。
找到该 XML 文件的 <TabGroup> 节。 注意,该部分有用于“Links”(链接)和“File Attachments”(文件附件)的 <Tab> 元素,其中每个 <Tab> 元素包含一个呈现各自控件的 <Control> 元素。
<Tab Label="Links"> <Control Type="LinksControl" /> </Tab> <Tab Label="File Attachments"> <Control Type="AttachmentsControl" /> </Tab>
通过用下面的新 XML 替换上一步骤所示的 XML,将两个 <Tab> 元素合并为一个同时包含两个控件的“Links and Attachments”(链接和附件)<Tab> 元素。
<Tab Label="Links and Attachments"> <Control Type="LinksControl" Label="Links" LabelPosition="Top" /> <Control Type="AttachmentsControl" Label="Attachments" LabelPosition="Top" /> </Tab>
找到 <FORM> 的 <Layout> 定义中描述**“Classification”(分类)和“Status”**(状态)组的部分。
<Group Label="Classification"> <Column PercentWidth="100"> <Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="Area" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="Iteration" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="MyCompany.MyProcess.Category" Label="Category" LabelPosition="Left" /> </Column> </Group>
备注
为获得最佳效果,每个 Control(控件)或 Group(组)应显示在一个 Column(列)中,即使该 Column 跨越整个窗体宽度也应如此。相应地,每个 Column 应该显示在一个 Group 中,即使该 Group 没有可见的标签或边界也应如此。
在下面的示例中选择 CONTROL 元素行,然后在**“编辑”菜单上单击“复制”**,将此内容复制到剪贴板备用。
<Column PercentWidth="70"> <Group> <Column PercentWidth="100"> <Group Label="Classification"> <Column PercentWidth="100"> <Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="Area" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="Iteration" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="MyCompany.MyProcess.Category" Label="Category" LabelPosition="Left" /> </Column> </Group>
若要将 Classification 组从它在窗体上的当前位置移除,请从示例中删除下面的行:从 <Group Label="Classification"> 到 </Group>。
<Layout> <Group> <Column PercentWidth="70"> <Control Type="FieldControl" FieldName="System.Title" Label="&Title:" LabelPosition="Left" /> </Column> <Column PercentWidth="30"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.Discipline" Label="&Discipline:" LabelPosition="Left" /> </Column> </Group> <Group Label="Classification"> <Column PercentWidth="100"> <Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="&Area:" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="&Iteration:" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="MyCompany.MyProcess.Category" Label="Category" LabelPosition="Left" /> </Column> </Group>
在 <TabGroup> 部分,找到下列定义**“Details”(详细信息)**选项卡的行:
<Tab Label="Details"> <Group> <Column PercentWidth="50"> <Group Label="General"> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.Issue" Label="Iss&ue:" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.ExitCriteria" Label="E&xit criteria:" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Build.IntegrationBuild" Label="Integration &build:" LabelPosition="Left" /> </Column> </Group> </Column> <Column PercentWidth="50"> <Group Label="Schedule"> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.RemainingWork" Label="Remaining &work (hours):" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.CompletedWork" Label="Com&pleted work (hours):" LabelPosition="Left" /> </Column> </Group> </Column> </Group> </Tab>
若要将这些控件移至**“详细信息”**选项卡,请在 <Tab Label="Details"> 元素后粘贴剪贴板中的内容。
<Tab Label="Details"> <Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="Area" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="Iteration" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="MyCompany.MyProcess.Category" Label="Category" LabelPosition="Left" /> <Group> <Column PercentWidth="50"> <Group> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.Issue" Label="Issue" LabelPosition="Left" /> ...
若要围绕移动的字段创建分组并将字段划分为两列,请添加 Group 和 Column 元素,如下面的示例所示:
<Tab Label="Details"> <Group Label="Classification"> <Column PercentWidth="50"> <Group> <Column PercentWidth="100"> <Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="Area" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="Iteration" LabelPosition="Left" /> </Column> </Group> </Column> <Column PercentWidth="50"> <Group> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="MyCompany.MyProcess.Category" Label="Category" LabelPosition="Left" /> </Column> </Group> </Column> </Group> <Group> <Column PercentWidth="50"> <Group> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.Issue" Label="Issue" LabelPosition="Left" /> ...
单击**“保存”**将更改保存到该 XML 文件。
将更改后的“Special Task”工作项类型导入 Team Foundation Server。 为此,请重复以下过程中提供的步骤:导入“Special Task”类型并检查更改。
请注意,Classification 组已不再在主窗体上。 单击**“Links and Attachments”选项卡和“Details”**选项卡以查看所做更改的结果。
单击**“关闭”关闭新的“Special Task”。 提示您保存工作项时,请单击“否”**。