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

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

重要

对于本地 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 Team Explorer 的免费版本来访问此工具。

注意

若要连接到 Azure DevOps Services,建议使用最新版本的 Visual Studio 或 Visual Studio Community。

注意

若要连接到本地服务器,建议使用与 Azure DevOps Server 相同的或更高版本的 Visual Studio。 例如,如果连接到 Azure DevOps Server 2019,则从 Visual Studio 2019 版本连接到项目。

对于 Visual Studio 2022

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

ProfessionalEnterprise代替Community,具体取决于你安装的版本。

对于 Visual Studio 2019

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

ProfessionalEnterprise代替Community,具体取决于你安装的版本。

对于 Visual Studio 2017

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

TeamExplorerProfessional代替Enterprise,具体取决于你安装的版本。

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

提示

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

先决条件

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

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

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

注意

即使使用管理权限登录,也必须打开提升的命令提示符窗口,才能在运行 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]   

参数

参数 描述
/collection:CollectionURL 指定项目集合的 URI。 例如:

本地格式: http://ServerName:Port/VirtualDirectoryName/CollectionName
如果未使用虚拟目录,请使用以下格式: 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 禁用确认提示。
/?help 在命令提示符窗口中显示有关命令的帮助。

注解

使用 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 的颜色, 请编辑进程配置

不同工作项类型的颜色分配

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

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

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

如果要将特定 WIT 的创建限制为一组用户,可通过两种方式限制访问:

<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 时,必须更新项目的类别定义以反映新名称。 具体而言,在更新类别定义之前, 敏捷规划工具 将不起作用。

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