Visual Studio Team System自定义工作项类型
Visual Studio Team System
演练:对工作项类型进行基本自定义
在本演练中,您将以最常见的方式自定义现有工作项类型。您将了解用于自定义工作项类型的工具和定义这些类型的 XML 语言。
下列过程对这些自定义进行了阐释:
创建团队项目 在此过程中,您创建一个包含将在后续过程中使用的工作项类型的团队项目。
查看工作项类型 在此过程中,您显示一个现有工作项类型的表单。
导出工作项 在此过程中,您将工作项类型的定义导出到一个 XML 文件中。
重命名类型 在此过程中,您编辑包含工作项类型定义的 XML 文件,以将工作项类型的名称从“Task”(任务)更改为“Special Task”(特殊任务)。
导入更改 在此过程中,您将在前一个过程中更改的工作项类型导入 Team Foundation
Server。
添加字段 在此过程中,您将名为“Category”(类别)的新字段添加到一个现有工作项类型。
向字段添加规则 在此过程中,您添加一个规则使新的“Category”字段成为必选字段。
创建选取列表 在此过程中,您将添加“Category”字段的允许值列表。新的值将作为从工作项类型创建的工作项中的选项出现。
更改工作流 在此过程中,您向工作项类型添加新的状态和转换。
更改表单布局 在此过程中,您更改工作项表单上的字段位置。
先决条件
为了完成这些演练中的步骤,您需要:
Visual Studio 2005 Team System 的一个副本,或已安装 Team Explorer 并具有 Team Foundation Server 连接的 Visual Studio
2005 副本。
创建团队项目
创建团队项目
1. 启动 Visual Studio。
2. 通过单击“视图”然后单击“团队资源管理器”,打开 Team Explorer。
3. 在 Team Explorer 中,右击您连接到的 Team Foundation Server 的名称,然后单击“新建团队项目”。
4. 在“在 <服务器名称>
上新建团队项目”对话框中,在“团队项目的名称是什么?”下面,键入 WITLab,然后单击“下一步”。
5. 在“选择过程模板”页上,在“应使用哪个过程模板来创建团队项目?”下面,单击“MSF for Agile Software Development”,然后单击“完成”。
创建团队项目可能需要几分钟时间。
6. 当“已创建团队项目”页显示出来时,清除“启动过程指南”框,然后单击“关闭”。
这样就创建了名为“WITLab”的新团队项目,并在 Team Explorer 中显示在您的 Team Foundation Server
下面的节点中。
查看工作项类型
前提条件:您已经完成 创建团队项目。“WITLab”团队项目已经可用。
查看工作项类型
1. 启动 Visual Studio 并打开 Team Explorer。
2. 在 Team Explorer 中,展开 WITLab 团队项目,并等待几秒钟以便其节点出现。
3. 在团队项目中,右击“工作项”节点,指向“添加工作项”,然后单击“Task”。
随即显示一个表示新的“Task”工作项的表单。该表单的有些字段包含默认值。在本演练中,您将自定义从中创建此工作项的“Task”工作项类型。
导出工作项类型
前提条件:您已经完成 创建团队项目。“WITLab”团队项目已经可用。
导出工作项类型
1. 打开一个 Visual Studio 命令提示。为此,请单击“开始”,然后单击“所有程序”。指向“Microsoft Visual Studio 2005”,再指向“Visual
Studio Tools”,然后单击“Visual Studio 2005 命令提示”。
2. 通过键入以下命令并按 Enter,将目录更改到包含工作项类型的程序集的位置。
cd ..\Common7\IDE\PrivateAssemblies
3. 在命令提示处,键入以下命令然后按 Enter:
witexport /f task.xml /t <server name>
/p WITLab /n Task
此命令将“Task”工作项类型从
Team Foundation Server 导出到一个 XML 文件。导出操作完成时会显示以下消息:
工作项类型导出完成。
4. (可选)若要查看“Task”工作项类型的 XML 定义,请在命令提示处键入 task.xml 然后按 Enter。
重命名类型
前提条件:您已经完成了 导出工作项类型
过程。
重命名类型
1. 在 Visual Studio 中,单击“文件”,指向“打开”,然后单击“文件”。
这将显示“打开文件”对话框。
2. 在“查找范围”之下,定位到 Visual Studio 安装中的以下位置:
<驱动器>:\Program Files\Microsoft Visual Studio
8\Common7\IDE\PrivateAssemblies
3. 单击 task.xml 文件,然后单击“打开”。出现有关行尾的提示时,单击“否”。
这将打开 task.xml,即包含“Task”工作项类型的定义的 XML 文件。
4. 定位到 XML 文件中的以下元素。
|
<WORKITEMTYPE name="Task">
|
5. 将 name 属性的值更改为 Special Task。
|
<WORKITEMTYPE name="Special Task">
|
6. 将更改保存到新的 XML 文件。为此,在 Visual Studio 的“文件”菜单上,单击“另存 task.xml 为”。
随即出现“另存文件为”对话框。
7. 对于“文件名”,请键入 specialtask.xml,然后单击“保存”。
导入更改
前提条件:您已经完成了 重命名类型
过程。
导入更改
1. 打开一个 Visual Studio 命令提示。为此,请单击“开始”,然后单击“所有程序”。指向“Microsoft Visual Studio 2005”,再指向“Visual
Studio Tools”,然后单击“Visual Studio 2005 命令提示”。
2. 通过键入以下命令并按 Enter,将目录更改到包含工作项类型的程序集的位置。
cd ..\Common7\IDE\PrivateAssemblies
3. 将更改后的工作项类型导入 Team Foundation Server。为此,请在 Visual Studio 命令提示处键入以下命令,然后按“Enter”:
witimport /f specialtask.xml /t <server
name> /p WITLab
这会将 specialtask 工作项类型导入 Team Foundation Server。导入操作完成时会显示以下消息:
工作项类型导入完成。
4. 在 Team Explorer 中,单击“刷新”以从服务器下载最新更新。
这些更新包括您刚导入的更改。请等待几秒钟,直到加载了所有的节点。正在加载中的节点显示“正在工作”。
5. 新建“Special Task”工作项。为此,请右击“工作项”节点,指向“添加工作项”,然后单击“Special Task”。
该工作项是从您已更改并导入的工作项类型创建的。
添加字段
前提条件:您已经完成了 重命名类型
过程。
添加字段
1. 打开包含“Special Task”工作项类型定义的文件。为此,请在 Visual Studio 中单击标记为“specialtask.xml”的选项卡。
2. 找到 XML 文件的以下部分。
3. 通过键入下面以粗体文本显示的 XML,创建一个名为“Category”的新字符串字段和用于工具提示的帮助文本。
|
<FIELDS>
<FIELD name="Category" refname="MyCompany.MyProcess.Category"
type="String"><HELPTEXT>Describes the category to which
this special task belongs.</HELPTEXT></FIELD>
|
|
注意
|
|
“引用名称”(或 refname)是字段的编程名称。所有其他规则都应该引用此 refname。有关更多信息,请参见字段引用名。
|
4. 找到 XML 文件中描述工作项表单的部分。
5. 找到 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>
|
6. 通过键入下面以粗体文本显示的 XML,插入一个新控件以显示“Category”字段:
|
<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>
|
7. 单击工具栏上的“保存”按钮将更改保存到该 XML 文件。
8. 将更改后的“Special Task”工作项类型导入 Team Foundation Server。为此,请在 Visual Studio 命令提示处键入以下命令,然后按 Enter:
witimport /f specialtask.xml /t <server
name> /p WITLab
这会将 specialtask 工作项类型导入 Team Foundation Server。导入操作完成时会显示以下消息:
工作项类型导入完成。
9. 在 Team Explorer 中,单击“刷新”以从服务器下载最新更新。
这些更新包括您刚导入的更改。请等待几秒钟,直到加载了“工作项”节点。正在加载中的节点显示“正在工作”。
10. 新建“Special Task”工作项。为此,请右击“工作项”节点,指向“添加工作项”,然后单击“Special Task”。
此工作项是从您已更改并导入的工作项类型创建的。
请注意表单上新的“Category”字段。将鼠标指针移到该字段的标签上方以查看工具提示。
11. 单击“关闭”关闭新的“Special Task”。提示您保存工作项时,请单击“否”。
向字段添加规则
前提条件:您已经完成了 添加字段
过程。
向字段添加规则
1. 打开包含“Special Task”工作项类型定义的文件。为此,请在 Visual Studio 中单击标记为“specialtask.xml”的选项卡。
2. 找到 XML 文件的 <FIELDS> 部分以及其中的“Category”字段。
3. 通过将以下规则添加到该 XML 文件,使“Category”成为必选字段。该规则以粗体文本显示。
|
<FIELD name="Category"
refname="MyCompany.MyProcess.Category" type="String"
reportable="dimension">
<HELPTEXT>Describes the category to
which this special task belongs.</HELPTEXT>
<REQUIRED />
</FIELD>
|
4. 单击“保存”将更改保存到该 XML 文件。
5. 将更改后的“Special Task”工作项类型导入 Team Foundation Server。为此,请在 Visual Studio 命令提示处键入以下命令,然后按 Enter:
witimport /f specialtask.xml /t <server
name> /p WITLab
这会将 specialtask 工作项类型导入 Team Foundation Server。导入操作完成时会显示以下消息:
工作项类型导入完成。
6. 在 Team Explorer 中,单击“刷新”以从服务器下载最新更新。
这些更新包括您刚导入的更改。请等待几秒钟,直到加载了“工作项”节点。正在加载中的节点显示“正在工作”。
7. 新建“Special Task”工作项。为此,请右击“工作项”节点,指向“添加工作项”,然后单击“Special Task”。
此工作项是从您已更改并导入的工作项类型创建的。
请注意“Category”字段现在已突出显示。这指示它是必选字段。
8. 选择“Special Task”工作项上的“标题”字段并键入“示例任务”。
9. 单击工具栏上的“保存”按钮保存该工作项。
随即显示一个表明“Category”字段不能为空的错误对话框。单击“确定”关闭对话框。
10. 在“Special Task”上的“Category”字段中,键入“A 类别”。
11. 单击“保存”以保存该工作项。
请注意,该工作项现在可以保存了。
12. 单击“关闭”关闭新的“Special Task”。
创建选取列表
前提条件:您已经完成了 向字段添加规则
过程。
创建选取列表
1. 打开包含“Special Task”工作项类型定义的文件。为此,请在 Visual Studio 中单击标记为“specialtask.xml”的选项卡。
2. 找到 XML 文件的 <FIELDS> 部分以及其中的“Category”字段。
3. 通过插入一个 ALLOWEDVALUES 规则来添加“Category”字段的允许值列表。新规则在下面的 XML 中以粗体文本显示。
|
<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>
|
4. 通过删除以粗体文本显示的 REQUIRED 规则,使“Category”成为可选字段。
|
<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>
|
5. 单击“保存”将更改保存到该 XML 文件。
6. 将更改后的“Special Task”工作项类型导入 Team Foundation Server。为此,请在 Visual Studio 命令提示处键入以下命令,然后按 Enter:
witimport /f specialtask.xml /t <server
name> /p WITLab
这会将 specialtask 工作项类型导入 Team Foundation Server。导入操作完成时会显示以下消息:
工作项类型导入完成。
7. 在 Visual Studio 的 Team Explorer 窗口中,单击“刷新”按钮从服务器下载最新的更新。
这些更新包括您刚导入的更改。请等待几秒钟,直到加载了“工作项”节点。正在加载中的节点显示“正在工作”。
8. 新建“Special Task”工作项。为此,请右击“工作项”节点,指向“添加工作项”,然后单击“Special Task”。
此工作项是从您已更改并导入的工作项类型创建的。
9. 单击“Category”字段的下拉列表框。
请注意,该字段现在只支持由 ALLOWEDVALUES 规则指定的值。
|
注意
|
|
下拉列表中的允许值始终按字母顺序出现,与 XML 文件中的 LISTITEM 元素的顺序无关。
|
10. 单击“关闭”关闭新的“Special Task”。提示您保存工作项时,请单击“否”。
更改工作流
前提条件:您已经完成了 创建选取列表
过程。
更改工作流
1. 打开包含“Special Task”工作项类型定义的文件。为此,请在 Visual Studio 中单击标记为“specialtask.xml”的选项卡。
2. 在该 XML 文件的 <WORKFLOW> 部分中,找到工作项类型的工作流定义,如下面的 XML 所示:
|
<WORKFLOW>
<STATES>
<STATE value="Active">
<FIELDS>
<FIELD
refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY
/>
</FIELD>
<FIELD
refname="Microsoft.VSTS.Common.ClosedBy">
...
|
3. 请注意,其中只定义了两个状态,即 Active 和 Closed。其中还定义了这两个状态之间的转换,以及一个从空状态开始的起始转换,后者在第一次创建工作项时使用。
4. 通过插入另一个 STATE 元素,向该类型定义添加一个 Unapproved 状态。新状态以粗体文本显示。
|
<WORKFLOW>
<STATES>
<STATE
value="Unapproved"> </STATE> <STATE value="Active">
<FIELDS>
<FIELD
refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY
/>
</FIELD>
<FIELD
refname="Microsoft.VSTS.Common.ClosedBy">
...
|
5. 创建空状态与 Unapproved 状态之间的转换。为此,请首先找到工作流定义中针对转换的部分。然后插入下面以粗体文本显示的 XML。由于此更改,该类型的所有新工作项将从 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>
|
6. 删除到 Active 的转换(在下面的 XML 中以粗体文本显示)。这样做是因为只能存在一个起始转换,并且您希望使用名为“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>
|
7. 通过插入下面以粗体文本显示的 XML,为起始转换添加一个“Ported”(移植)原因。这样让用户知道该工作项是全新的还是从另一个跟踪系统移植过来的。
|
<TRANSITIONS>
<TRANSITION
from="" to="Unapproved">
<REASONS>
<DEFAULTREASON
value="New" />
<REASON
value="Ported" /> </REASONS>
</TRANSITION>
...
|
8. 插入下面以粗体文本显示的 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> 元素下面插入此规则会将此规则的作用范围限定于其他转换或状态。
|
9. 通过插入下面以粗体文本显示的 XML,创建一个从 Unapproved 状态到 Active 状态的转换。由于此更改,当某个“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="Cut" />
<REASON
value="Obsolete" />
</REASONS>
...
|
10. 单击“保存”将更改保存到该 XML 文件。
11. 将更改后的“Special Task”工作项类型导入 Team Foundation Server。为此,请在 Visual Studio 命令提示处键入以下命令,然后按 Enter:
witimport /f specialtask.xml /t <server
name> /p WITLab
这会将 specialtask 工作项类型导入 Team Foundation Server。导入操作完成时会显示以下消息:
Work item type import complete.
12. 在 Team Explorer 中,单击“刷新”以从服务器下载最新更新。
这些更新包括您刚导入的更改。请等待几秒钟,直到加载了“工作项”节点。正在加载中的节点显示“正在工作”。
13. 新建“Special Task”工作项。为此,请右击“工作项”节点,指向“添加工作项”,然后单击“Special Task”。
此工作项是从您已更改并导入的工作项类型创建的。
14. 请注意,初始“状态”现在为 Unapproved,并且“原因”默认为“New”。此外,“指派给”值默认为您的帐户名称。单击“原因”字段查看一个下拉列表框,其中列出了原因“New”和“Ported”。
15. 在“标题”字段中,键入标题,然后单击“保存”保存该工作项。等待保存操作完成(由状态栏上的“项已保存”指示)。
16. 在“状态”字段中,选择“Active”值以批准该工作项并再次转换它。请注意,“原因”字段默认为“Approved”。
17. 单击“保存”保存此转换。
18. 单击“关闭”关闭该“Special Task”。
更改表单布局
前提条件:您已经完成了 更改工作流
过程。
更改表单布局
1. 打开包含“Special Task”工作项类型定义的文件。为此,请在 Visual Studio 中单击标记为“specialtask.xml”的选项卡。
2. 找到该 XML 文件的 <TabGroup> 部分。注意,该部分中有用于“Links”(链接)和“File Attachments”(文件附件)的 TAB 元素,其中每个 TAB 元素包含一个呈现各自的控件的 CONTROL 元素。
|
<Tab Label="Links">
<Control
Type="LinksControl" />
</Tab>
<Tab Label="File
Attachments">
<Control
Type="AttachmentsControl" />
</Tab>
|
3. 通过用下面的新 XML 替换上一步骤中所示的 XML,将两个选项卡合并为一个同时包含两个控件的“Links and
Attachments”(链接和附件)选项卡。
|
<Tab Label="Links and Attachments">
<Control
Type="LinksControl" Label="Links"
LabelPosition="Top" />
<Control
Type="AttachmentsControl" Label="Attachments"
LabelPosition="Top" />
</Tab>
|
4. 找到 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 没有可见的标签或边界也应如此。
|
5. 选择下面以粗体文本显示的行,然后单击“编辑”菜单上的“复制”,以将此内容复制到剪贴板以便以后使用。
|
<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>
|
6. 删除下面的 XML 中以粗体文本显示的行,以将 Classification 组从它在表单上的当前位置移除。
|
<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>
|
7. 在 <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>
|
8. 将剪贴板中的内容粘贴到以下位置,以将这些控件移至“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" />
...
|
|
|
|
9. 进行下列更改(以粗体文本显示),以围绕被移动的字段创建分组并将字段划分为两列。
|
<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" />
...
|
10. 单击“保存”将更改保存到该 XML 文件。
11. 将更改后的“Special Task”工作项类型导入 Team Foundation Server。为此,请在 Visual Studio 命令提示处键入以下命令,然后按 Enter:
witimport /f specialtask.xml /t <server
name> /p WITLab
这会将 specialtask 工作项类型导入 Team Foundation Server。导入操作完成时会显示以下消息:
工作项类型导入完成。
12. 在 Team Explorer 中,单击“刷新”以从服务器下载最新更新。
这些更新包括您刚导入的更改。请等待几秒钟,直到加载了“工作项”节点。正在加载中的节点显示“正在工作”。
13. 新建“Special Task”工作项。为此,请右击“工作项”节点,指向“添加工作项”,然后单击“Special Task”。
此工作项是从您已更改的工作项类型创建的。
请注意,Classification 组已不再在主表单上。单击“Links and Attachments”选项卡和“Details”选项卡以查看所做更改的结果。
14. 单击“关闭”关闭新的“Special Task”。提示您保存工作项时,请单击“否”。