导出、导入和管理工作项类型

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

重要

对于本地 XML 进程模型,可以使用 witadmin 列出、导入、导出和修改项目的流程。 对于继承的和托管的 XML 进程模型,只能使用 witadmin 列出和导出进程信息。 有关流程模型和支持的概述,请参阅 自定义工作跟踪体验

可以使用以下 witadmin 命令管理项目的工作项类型:

  • destroywitd:销毁工作项类型,并在不恢复的情况下永久销毁该类型的每个工作项。
  • exportwitd:将工作项类型的定义导出到 XML 文件或命令提示符窗口。
  • importwitd:将工作项类型从 XML 定义文件导入项目。 如果带相同名称的工作项类型已存在,则新的工作项类型定义将覆盖现有的类型。 如果工作项类型不存在,则会创建一个新的工作项类型。 若要验证定义工作项类型的 XML,但不导入文件,请使用 /v 选项。
  • listwitd:在命令提示符窗口中显示指定项目中的工作项类型的名称。
  • renamewitd:更改特定项目中工作项类型的显示名称。 在你运行此命令后,此类型的工作项将显示新的名称。

若要详细了解如何使用工作项类型跟踪工作,请参阅Azure Boards用户情景、问题、bug、功能和史诗中的跟踪工作项

如何运行 witadmin 命令行工具

若要运行 witadmin 命令行工具,请打开安装Visual Studio的命令提示符窗口。 witadmin 命令行工具随任何版本的Visual Studio一起安装。 可以通过安装免费版本的Visual Studio Community或Visual Studio团队资源管理器来访问此工具。

注意

如果要连接到本地服务器,则必须使用与 Azure DevOps Server 相同的或更高版本的 Visual Studio 或团队资源管理器。 例如,如果连接到 TFS 2017 实例,则必须从 Visual Studio 2017 或 Team Explorer 2017 进行连接。 没有团队资源管理器 2015 版本。

Visual Studio 2019 或 Team Explorer 2019 客户端:

%programfiles(x86)%\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer

或者,TeamExplorerProfessionalEnterprise代替Community,具体取决于已安装的版本。

Visual Studio 2017 或团队资源管理器 2017 客户端:

%programfiles(x86)%\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer

或者,TeamExplorerProfessionalEnterprise代替Community,具体取决于已安装的版本。

在 32 位版本的Windows上,将 %programfiles (x86) % 替换为 %programfiles% 。 可以安装Visual Studio Community (,该) 或Visual Studio团队资源管理器 2017 免费访问团队资源管理器

提示

使用 witadmin,可以 导入和导出定义文件。 可以使用的其他工具包括进程编辑器 (要求已安装Visual Studio) 版本。 从Visual Studio市场安装进程模板编辑器

或者,可以使用 TFS 团队Project管理器,这是一个可从GitHub获取的开源客户端。

提示

使用 witadmin,可以 导入和导出定义文件。 可以使用的其他工具包括进程编辑器 (要求已安装Visual Studio) 版本。 从 Visual Studio 市场安装 TFS 进程模板编辑器。 可以使用此版本的进程编辑器修改旧样式的工作项表单。 不能使用它来编辑与 新 Web 窗体关联的表单

或者,可以使用 TFS 团队Project管理器,这是一个可从GitHub获取的开源客户端。

先决条件

对于定义工作项类型的项目,必须设置以下权限:

  • 若要导出或列出工作项类型,你必须是Project管理员组的成员,或者将“查看项目级信息”权限设置为“允许”。
  • 若要销毁、导入或重命名工作项类型,必须是 Team Foundation Administrators 安全组或Project管理员安全组的成员。

有关详细信息,请参阅 更改项目集合级权限

注意

即使使用管理权限登录,也必须打开提升的命令提示符窗口,才能在运行 Windows Server 2008 的服务器上执行此函数。 若要打开提升的命令提示符窗口,请选择“ 开始”,打开 命令提示符的快捷菜单,然后选择“ 以管理员身份运行”。 有关详细信息,请参阅 Microsoft 网站:用户访问控制

语法

witadmin destroywitd /collection:CollectionURL /p:Project /n:TypeName [/noprompt]   
witadmin exportwitd /collection:CollectionURL /p:Project /n:TypeName [/f:FileName] [/e:Encoding] [/exportgloballists]  
witadmin importwitd /collection:CollectionURL [/p:Project] /f:FileName [/e:Encoding] [/v] 
witadmin listwitd /collection:CollectionURL /p:Project    
witadmin renamewitd /collection:CollectionURL /p:Project /n:TypeName /new:NewName [/noprompt]   

参数

参数 说明
/collectionCollectionURL 指定项目集合的 URI。 URI 的格式如下: http://ServerName:Port/VirtualDirectoryName/CollectionName

如果未使用虚拟目录,则 URI 将为以下格式:

http://ServerName:Port/CollectionName
/p:Project 要为其管理工作项类型的项目。 必须在 /collection 参数指定的项目集合中定义此项目。

除非使用 /v 选项运行 importwitd 命令,否则需要使用 /p 参数。
/n:TypeName 要销毁、导出、导入或重命名的工作项类型的名称。
/f:FileName 包含要导出或导入的工作项类型的 XML 定义文件的路径和文件名。 如果使用 exportwitd 命令时省略此参数,XML 会显示在命令提示符窗口中。

注意:如果使用 Windows Vista,则可能无权访问某些文件夹。 如果你尝试将工作项类型导出到没有权限的位置,注册表虚拟技术会自动重定向导出的文件并将其保存到虚拟存储。 若要避免此重定向,你可以将文件导出到具有权限的位置。 有关详细信息,请参阅 Microsoft 网站上的 “注册表虚拟化 ”页。
/e:Encoding .NET Framework 2.0 编码格式的名称。 该命令使用指定的编码来导出或导入 XML 数据。 例如, /e:utf-7 指定 Unicode (UTF-7) 编码。 如果省略此参数, witadmin 会尝试检测编码,如果检测失败, witadmin 将使用 UTF-8。
/exportgloballists 导出由工作项类型引用的全局列表的定义。 全局列表的定义将嵌入到工作项类型定义 XML。 若未指定,将省略全局列表的定义。
/v 验证定义工作项类型的 XML,但是不导入 XML 定义文件。 注意: 无需指定项目即可验证类型定义。 将忽略对项目范围的组的引用。
/new:NewName 工作项类型的新名称。
/noprompt 禁用请求确认的提示。
/?帮助 在“命令提示符”窗口中显示有关命令的帮助。

注解

使用 destroywitd 命令时,它会销毁以下所有对象:

  • 工作项类型
  • 该类型的所有工作项
  • 工作项表格、长文本表格和链接表格中的对应条目
  • 工作项类型元数据缓存中的对象

示例

除非另外指定,否则在每个示例中应用下面的值:

  • 项目集合的 URI: http://AdventureWorksServer:8080/tfs/DefaultCollection
  • 项目名称:AdventureWorks
  • 输入或输出文件的名称:myworkitems.xml
  • 工作项类型名称:myworkitem
  • 默认编码:UTF-8

导出 WIT 的定义

以下命令会将 myworkitem 的定义导出至文件 myworkitems.xml。

witadmin exportwitd /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /p:AdventureWorks /f:myworkitems.xml /n:myworkitem  

以下示例使用 Unicode (UTF-7) 编码导出工作项。

witadmin exportwitd /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /p:AdventureWorks /f:myworkitems.xml /n:myworkitem /e:utf-7  

导出 WIT 的定义及其引用的全局列表

以下示例将导出工作项类型及其引用的全局列表。

witadmin exportwitd /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /p:AdventureWorks /f:myworkitems.xml /n:myworkitem /exportgloballists  

列出 WIT 的定义

以下示例将在命令提示符窗口中显示工作项类型的定义。

witadmin exportwitd /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /p:AdventureWorks /n:myworkitem  

导入 WIT 的定义

以下示例将从 XML 文件导入工作项定义。

witadmin importwitd /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /f:myworkitem.xml /p:AdventureWorks  

验证 WIT 的 XML 定义

以下示例将验证定义工作项类型的 XML,但是不会导入定义。

witadmin importwitd /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /f:myworkitem.xml /p:AdventureWorks /v  

问题解答

问:可以在升级后使用“配置功能向导”来更新项目,可以进行哪些自定义?

答: 可以添加自定义 WIT 并更改窗体布局。 配置功能向导将更新项目,你将有权访问最新功能。

更改工作流或重命名 WIT 可能需要在更新项目时执行一些手动操作。 若要了解可以安全地进行哪些自定义,以及应避免哪些自定义,请参阅 “自定义工作跟踪体验:在自定义之前,请了解维护和升级影响

问:如何更改与 WIT 关联的颜色?

答: 在 Web 门户中,工作项显示在查询结果和敏捷规划工具的积压工作和板页上。 若要更改与现有 WIT 关联的颜色或添加要用于新 WIT 的颜色, 请编辑进程配置

Color assignments to different work item types

问:如何停用或禁用 WIT? 如何限制用户创建特定类型的工作项?

答: 如果你有要停用的 WIT,但保留基于该类型创建的工作项,则可以添加一个规则来禁用所有有效用户保存工作项类型。

    <TRANSITION from=" " to="New">  
       <FIELDS>  
         <FIELD refname="System.CreatedBy">  
              <VALIDUSER not="[Team Project Name]Project Valid Users" />  
         </FIELD>  
       </FIELDS>  
    </TRANSITION>     

若要只允许一组用户创建特定 WIT,可通过两种方式来限制访问:

  • 将 WIT 添加到隐藏类别组 ,以防止大多数参与者创建它们。 如果要允许一组用户访问, 可以创建指向 打开工作项表单的模板的超链接,并与要创建这些团队成员共享该链接。
  • 字段规则添加到 System.CreatedBy 字段的工作流,以有效地限制一组用户创建特定类型的工作项。 如以下示例所示,创建工作项的用户必须属于 Allowed Group 该用户才能保存工作项。
<TRANSITION from=" " to="New">  
   <FIELDS>  
     <FIELD refname="System.CreatedBy">  
         <VALIDUSER for="Allowed Group" not="Disallowed Group" />  
     </FIELD>  
   </FIELDS>  
</TRANSITION>  

问:如何删除 WIT?

答: 若要防止团队成员使用特定 WIT 创建工作项,可以从项目中删除它。 使用 witadmin destroywitd时,将永久删除使用该 WIT 和 WIT 本身创建的所有工作项。 例如,如果你的团队不使用障碍,则可以从 Fabrikam 网站项目中删除标记为 WIT 的障碍。

witadmin destroywitd /collection:"http://FabrikamPrime:8080/tfs/DefaultCollection" /p:"Fabrikam Web Site" /n:"Impediment"   

删除属于类别的 WIT 时,必须更新项目的类别定义以反映新名称。 具体而言,在更新类别定义之前, 敏捷规划工具 将不起作用。

有关详细信息,请参阅 导入和导出类别