解决流程导入的验证错误

Azure DevOps Services

重要说明

导入流程支持托管 XML 流程模型,该模型允许你通过更新流程模板的 WIT 定义来管理自定义。 此功能仅适用于使用 Azure DevOps 数据导入服务迁移到 Azure DevOps 服务的组织。

如果你使用继承流程模型,可以通过创建继承的流程,通过用户界面自定义工作跟踪。 如果使用本地 XML 进程模型,则可以自定义进程模板: 上传或下载进程模板自定义进程模板

有关详细信息,请参阅 自定义工作跟踪

在流程导入期间,会对流程进行验证,以确保系统针对自定义流程按预期工作。 如果进程验证失败,则会收到错误消息列表。

流程导入成功

如果在尝试 导入过程时收到验证错误,请在重试导入之前解决该错误。 每个错误都有一个链接,可了解有关特定验证失败的更多信息以及如何纠正它的指南。 应用为您收到的消息提供的解决方案补丁,压缩更新的文件,然后重试导入操作。

如果你刚刚开始自定义,请查看提供的验证规则

先决条件

有关定制Azure Boards以满足特定业务需求的指导,请参阅 Configure 和自定义 Azure Boards

类别 要求
权限 - 若要创建、删除或编辑进程:必须是项目集合管理员组的成员,或者将特定集合级别权限(创建进程删除进程编辑进程从组织中删除字段)设置为允许。 有关详细信息,请参阅 自定义继承的进程
- 若要更新版块:必须是团队管理员或是项目管理员组的成员。
Access - 即使你拥有 基本 访问权限或较低访问权限,如果有人授予你权限,你仍然可以更改进程。
- 要更新和更改现有工作项的类型:必须是项目的成员。
项目进程模型 - 在包含该项目的项目集合中使用 继承过程模型
- 若要将数据迁移到 Azure DevOps Services,请使用 Team Foundation Server 数据库导入服务
知识 - 熟悉 自定义和处理模型

使用 AI 排查进程导入错误

以下示例提示文本对 Copilot 聊天帮助排查进程导入验证错误和 XML 配置问题。 将此提示复制并粘贴到Copilot聊天中,并将占位符替换为特定信息。

为获得最佳 AI 帮助,请包括特定的详细信息,如错误代码(TF ######)、受影响的文件名、工作项类型名称和验证错误中提到的字段引用名称。

“我收到此Azure DevOps进程导入错误:[在此处粘贴错误消息]

进程导入详细信息:

  • 错误代码:[错误代码,如 TF402###]
  • 受影响的文件:[Bug.xml等 XML 文件名,ProcessConfiguration.xml]
  • 工作项类型:[WIT NAME(如果适用)]
  • 字段引用名称:[FIELD REFNAME(如果适用)]
  • 自定义命名空间:[您的自定义命名空间(如果适用)]

你能帮我排查此问题吗? 请提供以下步骤说明:

  1. 确定验证错误的根本原因
  2. 修复 XML 配置或进程定义
  3. 验证更改是否解决了验证问题

上下文:这是使用托管 XML 进程模型将自定义进程模板导入Azure DevOps服务。 此错误可能与工作项类型定义、字段配置、进程配置、类别或 XML 架构冲突相关。 `

Copilot由 AI 提供支持,因此可能会带来惊喜和错误。 有关详细信息,请参阅 Copilot常规使用常见问题解答

信息消息 - 无需操作

TF402555:字段 [refName] 已删除。

导入的流程不包括正在更新流程中的指定字段,因此该字段将在更新操作中被删除。

方案示例

  1. 向 Bug.xml 工作项添加自定义字段
    <FIELD name="Foo" refname="MyCompany.CustomFields.Foo" type="String" reportable="dimension" />
    
  2. 导入流程
  3. 从 Bug.xml 中删除字段
  4. 导入更新的流程

系统会显示有关要删除的字段的信息消息。
TF402555: Field MyCompany.CustomFields.Foo will be deleted

TF402591:在现有流程 [processName] 中,引用名称为 [refName] 的字段不能从“[name2]”重命名为“[name1]”。

你正在导入的流程包含一个重命名的字段,该字段在当前流程中使用相同的 refname

无法重命名字段名称。

TF402598:工作项类型 [refName] 已删除。

要更新的进程不包括当前进程中存在的命名 WIT。 作为更新现有流程的一部分,系统会从当前流程中删除命名的 WIT。

方案示例

  1. 创建名为“LSI”的新工作项类型
    <WORKITEMTYPE name="LSI" refname="My.LSI">  
    
  2. 导入流程
  3. 从流程中删除 LSI 工作项类型
  4. 导入更新的流程

系统会显示有关删除的信息消息。
TF402598: Work item type My.LSI will be deleted

TF402601:工作项类型 [witName] 已从 [name2] 重命名为 [name1]

该进程包含重命名的 WIT。 WIT 在现有进程中重命名。
你正在更新的进程包含根据当前进程中的名称重命名的 WIT。
作为更新现有流程的一部分,系统会重命名当前流程中的 WIT。 现有项目中引用该流程的所有工作项也会被重命名。

方案示例

  1. 创建名为“LSI”的新工作项类型
    <WORKITEMTYPE name="LSI" refname="My.LSI">  
    
  2. 导入流程
  3. 将 LSI 工作项类型重命名为“实时站点事件”
    <WORKITEMTYPE name="Live Site Incident" refname="My.LSI">  
    
  4. 导入更新的流程

系统会显示有关要重命名的 WIT 的信息消息。
TF402601: Work item type My.LSI will be renamed to 'Live Site Incident' from 'LSI'

其他文件错误

TF402586:解析文件错误:[错误消息]

格式错误的 XML 语法可能导致解析文件错误。 缺少结束标记、缺少引号、缺少左括号或右括号(< 或 >)可能导致解析文件错误。

根据错误消息,确定并纠正格式错误的 XML 的来源。

TF402594:文件违反架构,出现以下错误:[错误消息]

流程 zip 文件中的每个 XML 文件必须符合给定的架构。 架构冲突错误是由于 XML 文件中的自定义 XML 标记或属性造成的。 阅读错误消息以确定违反架构的来源并相应地修复。

工作项跟踪架构定义规定 FORM 元素中的所有子元素使用驼峰命名法,而所有其他元素均使用大写。 如果在验证类型定义文件时遇到错误,请检查元素的大小写结构。 同时,根据 XML 语法规则,开始标记与结束标记的大小写结构还必须匹配。

错误示例

自定义 XML 标记:

  <WORKITEMTYPE name="Bug" refname="My.Bug">
    <FOO>Hello World</FOO>
    ...

向 XML 元素添加了额外属性:

  <WORKITEMTYPE name="Bug" refname="My.Bug" foo="hello world">

VS412450:[fileName] 中的 XML 架构验证错误。 [错误消息]

纠正命名文件中的架构错误。

进程模板插件错误

ProcessTemplate.xml 是定义整个进程和导入以添加或更新进程的所有 XML 定义文件的根文件。 此文件包含创建项目时引用的所有插件和任务组。 每个任务组引用一个从属 XML 文件(通常在子文件夹中),其中定义了特定任务。 通常,为每个插件指定一个任务组。

ProcessTemplate.xml 定义文件必须符合语法和规则。

VS412457:在流程包中找不到指定的文件“[fileName]”。

更正进程 zip 包以包含命名的文件。

VS402452:流程模板未指定版本,或指定了无效版本。

若要指定版本,请编辑 ProcessTemplate.xml 文件。

错误示例

ProcessTemplate.xml 文件指定与“敏捷”流程相同的 version GUID,而“敏捷”流程是锁定的流程。

<ProcessTemplate>
  <metadata>
    <name>Fabrikam Agile</name>
    <description>Use this template to support Fabrikam Agile planning methods.</description>
    <version type="ADCC42AB-9882-485E-A3ED-7678F01F66BC" major="7" minor="36" />

解决示例

指定了不同的 GUID。

<ProcessTemplate>
  <metadata>
    <name>Fabrikam Agile</name>
    <description>Use this template to support Fabrikam Agile planning methods.</description>
    <version type="7710F7A4-1F19-4054-9FBC-D94A5935221E" major="7" minor="1" />

VS412453:流程模板 zip 文件不包含必需的插件 [pluginName]

ProcessTemplate.xml 文件及其支持的插件文件中列出的所有文件必须存在于流程 zip 文件中。

使用搜索工具在流程文件和文件夹集中查找所有 filename=value 的实例。 然后,要么更新插件以删除缺失的命名文件,要么将命名文件添加到它所属的流程文件夹中。

 <taskList filename="WorkItem Tracking\WorkItems.xml" />

错误示例

WorkItemTracking 插件指定 fileName="WorkItem Tracking\TypeDefinitions\Epic.xml,但它不会添加到 WorkItem Tracking\TypeDefinitions 文件夹中。

     <WORKITEMTYPE fileName="WorkItem Tracking\TypeDefinitions\Epic.xml" />

解决示例

将 Epic.xml 文件添加到 WorkItem Tracking\TypeDefinitions 文件夹。

VS412454:插件 [pluginName] 包含多个 taskList{1}、{2}。 每个插件只允许有一个 taskList

纠正命名插件的 ProcessTemplate.xml 文件,以减少定义的 tasklist 元素数量。

错误示例

WorkItemTracking 插件包含两个 tasklist 语句。

    <group id="WorkItemTracking" description="Workitem definitions uploading." completionMessage="Work item tracking tasks completed.">
      <dependencies>
        <dependency groupId="Classification" />
        <dependency groupId="Groups" />
      </dependencies>
      <taskList filename="WorkItem Tracking\WorkItems.xml" />
      <taskList filename="WorkItem Tracking\FabrikamWorkItems.xml" />
    </group>

解决示例

    <group id="WorkItemTracking" description="Workitem definitions uploading." completionMessage="Work item tracking tasks completed.">
      <dependencies>
        <dependency groupId="Classification" />
        <dependency groupId="Groups" />
      </dependencies>
      <taskList filename="WorkItem Tracking\FabrikamWorkItems.xml" />
    </group>

TF402575:流程中只能包含一个类别定义文件。

错误示例

WorkItems.xml 文件包含两个 CATEGORIES 语句。

  <task id="Categories" name="Categories definitions" plugin="Microsoft.ProjectCreationWizard.WorkItemTracking" completionMessage="Work item type categories created">
    <dependencies>
      <dependency taskId="WITs" />
    </dependencies>
    <taskXml>
      <CATEGORIES fileName="WorkItem Tracking\Categories.xml" />
      <CATEGORIES fileName="WorkItem Tracking\Custom_Categories.xml" />
    </taskXml>
  </task>

解决示例

WorkItems.xml 文件更新为仅包含一个 CATEGORIES 语句。

  <task id="Categories" name="Categories definitions" plugin="Microsoft.ProjectCreationWizard.WorkItemTracking" completionMessage="Work item type categories created">
    <dependencies>
      <dependency taskId="WITs" />
    </dependencies>
    <taskXml>
      <CATEGORIES fileName="WorkItem Tracking\Custom_Categories.xml" />
    </taskXml>
  </task>

TF402576:流程中只能包含一个 ProcessConfiguration 定义文件。

错误示例

WorkItems.xml 文件包含重复的 ProjectConfiguration 语句。

    <taskXml>
      <PROCESSCONFIGURATION>
        <ProjectConfiguration fileName="WorkItem Tracking\Process\ProcessConfiguration.xml"/>
      </PROCESSCONFIGURATION>
    </taskXml>
    <taskXml>
      <PROCESSCONFIGURATION>
        <ProjectConfiguration fileName="WorkItem Tracking\Process\ProcessConfiguration.xml"/>
      </PROCESSCONFIGURATION>
    </taskXml>

解决示例

WorkItems.xml 文件更新为仅包含一个 ProjectConfiguration 语句。

    <taskXml>
      <PROCESSCONFIGURATION>
        <ProjectConfiguration fileName="WorkItem Tracking\Process\ProcessConfiguration.xml"/>
      </PROCESSCONFIGURATION>
    </taskXml>

TF402587:缺少必需的 ProcessConfiguration 文件。

WorkItems.xml 文件指定要上传的 ProcessConfiguration 文件。 该文件未指定、包含过期的规范、模板中缺少指定的文件,或者文件夹/文件名不正确。

错误示例

指定的配置已过期,并指定了两个不在 Process 文件夹中的文件。

    <taskXml>
      <PROCESSCONFIGURATION>
        <CommonConfiguration fileName="WorkItem Tracking\Process\CommonConfiguration.xml"/> 
        <AgileConfiguration fileName="WorkItem Tracking\Process\AgileConfiguration.xml"/>
      </PROCESSCONFIGURATION>
    </taskXml>

解决示例

WorkItems.xml 文件更新为包含正确的配置 ProjectConfiguration 语句。

    <taskXml>
      <PROCESSCONFIGURATION>
        <ProjectConfiguration fileName="WorkItem Tracking\Process\ProcessConfiguration.xml"/>
      </PROCESSCONFIGURATION>
    </taskXml>

TF402577:字段 [refName] 指定的易记名称 [friendlyName] 已被流程 [processNames] 中的字段 [refName] 使用。

导入到 Azure DevOps Services 的所有进程的 WIT 定义中的友好名称在所有字段定义中必须唯一。

命名进程包含定义使用易记名称的字段的 WIT。

修改流程 zip 文件中包含 [refName] 的 WIT 定义,并指定不同的易记名称或使其与正在使用的现有字段匹配。

错误示例

UserStory WIT 定义包含 Fabrikam.Product.Family 的 FIELD 元素,其易记名称为 Product。

      <FIELD name="Product" refname="Fabrikam.Product.Family" type="String" reportable="dimension">
        <HELPTEXT>Enter the name of the product family for this story or feature.</HELPTEXT>
      </FIELD>

但是,在现有流程中,Fabrikam.Product.Versions 使用易记名称“Product”

      <FIELD name="Product" refname="Fabrikam.Product.Versions" type="String" reportable="dimension">
        <HELPTEXT>Enter the name of the product version for this story or feature.</HELPTEXT>
      </FIELD>

解决示例

更新 UserStory WIT 定义以匹配现有字段。

      <FIELD name="Product" refname="Fabrikam.Product.Versions" type="String" reportable="dimension">
        <HELPTEXT>Enter the name of the product version for this story or feature.</HELPTEXT>
      </FIELD>

TF402585:流程模板中缺少必需的 WorkItemTracking 插件引用。

必须在 ProcessTemplate.xml 文件的 Microsoft.ProjectCreationWizard.WorkItemTracking 部分中指定 metadata 插件:

错误示例

ProcessTemplate.xml 文件的 Microsoft.ProjectCreationWizard.WorkItemTracking 部分中缺少 plugins 插件。

   <plugins>
      <plugin name="Microsoft.ProjectCreationWizard.Classification" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Reporting" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Portal" wizardPage="true" />
      <plugin name="Microsoft.ProjectCreationWizard.Groups" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.VersionControl" wizardPage="true" />
      <plugin name="Microsoft.ProjectCreationWizard.TestManagement" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Build" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Lab" wizardPage="false" />
    </plugins>

解决示例

   <plugins>
      <plugin name="Microsoft.ProjectCreationWizard.Classification" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Reporting" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Portal" wizardPage="true" />
      <plugin name="Microsoft.ProjectCreationWizard.Groups" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.WorkItemTracking" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.VersionControl" wizardPage="true" />
      <plugin name="Microsoft.ProjectCreationWizard.TestManagement" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Build" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Lab" wizardPage="false" />
    </plugins>

类别

Categories.xml 定义文件必须符合语法和规则。

TF402546:类别文件中缺少类别 [categoryName]

ProcessConfiguration.xml 文件中引用的所有类别必须在 Categories.xml 文件中定义。 此外,系统要求 Categories.xml 文件包含以下类别的定义:

  • Bug 类别
  • 代码评审请求类别
  • 代码评审响应类别
  • 反馈请求类别
  • 反馈响应类别
  • 隐藏的类型类别
  • 要求类别
  • 共享步骤类别
  • 共享参数类别
  • 任务类别
  • 测试用例类别
  • 测试计划类别
  • 测试套件类别

更新你的 Categories.xml 文件以定义缺失的 [name] 类别。

错误示例

ProcessConfiguration 引用 Epic 类别,但 Categories.xml 定义文件中缺少该类别。

解决示例

“长篇故事”类别已添加到“类别”文件。

  <CATEGORY name="Epic Category" refname="Microsoft.EpicCategory">
    <DEFAULTWORKITEMTYPE name="Epic" />
  </CATEGORY>

TF402553:元素 [name] 引用的类别 [categoryName] 未在类别文件中定义。

更新你的 Categories.xml 文件以定义缺失的 [categoryName] 类别。

TF402560:定义了 [n] 类别。 最多允许 [nn] 个。

查看你的 Categories.xml 文件中的所有 CATEGORY 元素语句,确定可以删除哪些语句以免超过允许的限制。 然后,查看你的 ProcessConfiguration.xml 文件,替换引用已删除类别的值。

TF402596:类别 [categoryName] 未定义工作项类型 [witName]

类别必须引用 /WorkItem Tracking/TypeDefinitions 文件夹中定义的 WIT,并将其列为要在 WorkItems.xml 插件文件中上传的任务。
查看 Categories.xml 文件,以获取对 /WorkItem Tracking/TypeDefinitions 文件夹中不包含的 WIT 的引用。

错误示例

为 Microsoft.EpicCategory 引用的 WIT 名称拼写错误。

  <CATEGORY name="Epic Category" refname="Microsoft.EpicCategory">
    <DEFAULTWORKITEMTYPE name="EpicABC" />
  </CATEGORY>

解决示例

  <CATEGORY name="Epic Category" refname="Microsoft.EpicCategory">
    <DEFAULTWORKITEMTYPE name="Epic" />
  </CATEGORY>

TF402597:不支持自定义类别 [categoryName],因为 ProcessConfiguration 未引用它。

只能指定用于在 ProcessConfiguration 中配置敏捷工具功能的自定义类别。
请查看 ProcessConfiguration.xml 文件,判断您是否遗漏了添加类别支持。 否则,从 Categories.xml 文件中删除 [categoryName]

错误示例

ProcessConfiguration 不引用 Microsoft.EpicCategory,尽管在 Categories.xml 定义文件中定义。

解决示例

向 ProcessConfiguration 添加 PortfolioBacklog 以引用 Microsoft.EpicCategory。

    <PortfolioBacklog category="Microsoft.EpicCategory" pluralName="Epics" singularName="Epic" workItemCountLimit="1000">
      <States>
        <State value="New" type="Proposed" />
        <State value="Active" type="InProgress" />
        <State value="Resolved" type="InProgress" />
        <State value="Closed" type="Complete" />
      </States>
      <Columns>
        <Column refname="System.WorkItemType" width="100" />
        <Column refname="System.Title" width="400" />
        <Column refname="System.State" width="100" />
        <Column refname="Microsoft.AzureDevOps.Scheduling.Effort" width="50" />
        <Column refname="Microsoft.AzureDevOps.Common.BusinessValue" width="50" />
        <Column refname="Microsoft.AzureDevOps.CMMI.RequirementType" width="100" />
        <Column refname="System.Tags" width="200" />
      </Columns>
      <AddPanel>
        <Fields>
          <Field refname="System.Title" />
        </Fields>
      </AddPanel>
    </PortfolioBacklog>

参考文章:

“分类”插件错误

Classification.xml 定义文件必须符合语法和规则。

TF402511:分类插件包含重复的属性名称:[propertyName]

错误示例

Classification.xml 文件在 property name="MSPROJ" 容器元素下包含第二个 properties 语句。

      <properties>
        <property name="MSPROJ" value="Classification\FileMapping.xml" isFile="true" />
        <property name="MSPROJ" value="Classification\Fabrikam_FileMapping.xml" isFile="true" />
        <property name="Process Template" value="Fabrikam Agile"/>
      </properties>

解决示例

删除重复的语句。

      <properties>
        <property name="MSPROJ" value="Classification\Fabrikam_FileMapping.xml" isFile="true" />
        <property name="Process Template" value="Fabrikam Agile"/>
      </properties>

TF402512:文件 [fileName] 不存在。

Classification.xml 文件中指定的文件不在指定路径中,或者路径拼写错误。

错误示例

“Classification”文件夹路径拼写错误。

       <properties>
        <property name="MSPROJ" value="Classification\Fabrikam_FileMapping.xml" isFile="true" />
        <property name="Process Template" value="Agile"/>
      </properties>

解决示例

      <properties>
        <property name="MSPROJ" value="Classification\Fabrikam_FileMapping.xml" isFile="true" />
        <property name="Process Template" value="Fabrikam Agile"/>
      </properties>

TF402513:分类插件中的名称 [pathName] 不符合 TreePath 命名限制。

Node查看指定的元素并更改名称,使其符合支持命名约定。 参考:添加和修改区域和迭代路径

错误示例

路径名称包括不允许的 # 字符。

        <Node StructureType="ProjectLifecycle" Name="Iteration" xmlns="">
          <Children>
            <Node StructureType="ProjectLifecycle" Name="Sprint #1" />
            <Node StructureType="ProjectLifecycle" Name="Sprint #2" />
            <Node StructureType="ProjectLifecycle" Name="Sprint #3" />
          </Children>
        </Node>

解决示例

路径名称已更正。

        <Node StructureType="ProjectLifecycle" Name="Iteration" xmlns="">
          <Children>
            <Node StructureType="ProjectLifecycle" Name="Sprint 1" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 2" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 3" />
          </Children>
        </Node>

TF402514:不支持分类插件中的 Node StructureType [structureTypeName]。

StructureType 属性仅允许以下值:ProjectModelHierarchyProjectLifecycle
Node查看指定的元素并删除任何不受支持的属性。

错误示例

ProjectLifecycle 拼写错误。

        <Node StructureType="ProjectLifecycle" Name="Iteration" xmlns="">
          <Children>
            <Node StructureType="ProjectLifecycle" Name="Sprint 1" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 2" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 3" />
          </Children>
        </Node>

解决示例

拼写错误的名称已更正。

        <Node StructureType="ProjectLifecycle" Name="Iteration" xmlns="">
          <Children>
            <Node StructureType="ProjectLifecycle" Name="Sprint 1" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 2" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 3" />
          </Children>
        </Node>

TF402515:分类插件中的属性要么缺失,要么不受支持。

property 元素仅允许以下属性:namevalueisFile
property查看指定的元素并删除任何不受支持的属性。

错误示例

value 属性拼写错误。

       <properties>
        <property name="MSPROJ" value="Classification\Fabrikam_FileMapping.xml" isFile="true" />
        <property name="Process Template" value="Agile" />
      </properties>

解决示例

拼写错误的属性已纠正。

      <properties>
        <property name="MSPROJ" value="Classification\Fabrikam_FileMapping.xml" isFile="true" />
        <property name="Process Template" value="Fabrikam Agile"/>
      </properties>

TF402516:分类插件包含两个以上的根级别节点,这不受支持。

检查指定的Node元素并删除额外的根节点。

错误示例

Classification.xml 文件在 Node StructureType="ProjectLifecycle" 容器元素下包含第二个 Nodes 语句。

      <Nodes>
        <Node StructureType="ProjectLifecycle" Name="Iteration" xmlns="">
          <Children>
            <Node StructureType="ProjectLifecycle" Name="Sprint 1" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 2" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 3" />
          </Children>
        </Node>
        <Node StructureType="ProjectLifecycle" Name="Iteration" xmlns="">
        <Node StructureType="ProjectModelHierarchy" Name="Area" xmlns="" />
      </Nodes>

解决示例

删除第二个语句。

      <Nodes>
        <Node StructureType="ProjectLifecycle" Name="Iteration" xmlns="">
          <Children>
            <Node StructureType="ProjectLifecycle" Name="Sprint 1" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 2" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 3" />
          </Children>
        </Node>
        <Node StructureType="ProjectModelHierarchy" Name="Area" xmlns="" />
      </Nodes>

TF402523:“分类”插件中找不到 GroupsandPermissions 插件中的区域或迭代路径“[pathName]”。

将缺失的 [pathName] 添加到 Classification.xml 文件中,或从 GroupsandPermissions.xml 文件中删除它。

错误示例

Classification.xml 文件指定冲刺,而不是迭代。

GroupsandPermissions.xmlteamSettings 指定了迭代。

    <teamSettings areaPath="Area">
        <iterationPaths backlogPath="Iteration">
            <iterationPath path="Iteration 1" />
            <iterationPath path="Iteration 2" />
            <iterationPath path="Iteration 3" />
        </iterationPaths>
    </teamSettings>

但是,Classification.xml 指定了冲刺。

        <Node StructureType="ProjectLifecycle" Name="Iteration" xmlns="">
          <Children>
            <Node StructureType="ProjectLifecycle" Name="Sprint 1" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 2" />
            <Node StructureType="ProjectLifecycle" Name="Sprint 3" />
          </Children>
        </Node>

解决示例

更新 GroupsandPermissions.xml 以使用冲刺。

    <teamSettings areaPath="Area">
        <iterationPaths backlogPath="Iteration">
            <iterationPath path="Sprint 1" />
            <iterationPath path="Sprint 2" />
            <iterationPath path="Sprint 3" />
        </iterationPaths>
    </teamSettings>

注意

当前导入流程不支持自定义链接类型。

查看你的 WorkItems.xml 插件文件中的所有 LINKTYPE 元素语句。 删除与自定义链接类型相关的语句,以免超过允许的限制。 然后,从 LinkTypes 文件夹中删除相应的链接类型定义文件。

此外,请移除对 LinksControlOptions 部分下 FORM 部分内添加到 WIT 定义的自定义链接类型的任何引用。

查看你的 WorkItems.xml 插件文件中的所有 LINKTYPE 元素语句。 移除所有指定自定义链接类型的语句。 然后,从 LinkTypes 文件夹中删除相应的链接类型定义文件。

WorkItems.xml 插件文件中的以下 LINKTYPE 元素语句是有效的:

      <LINKTYPES>
        <LINKTYPE fileName="WorkItem Tracking\LinkTypes\Affects.xml" />
        <LINKTYPE fileName="WorkItem Tracking\LinkTypes\SharedStep.xml" />
        <LINKTYPE fileName="WorkItem Tracking\LinkTypes\TestedBy.xml" />
        <LINKTYPE fileName="WorkItem Tracking\LinkTypes\SharedParameterLink.xml" />
      </LINKTYPES>

全局列表

注意

当前导入过程功能不支持全局列表。

TF402564:你定义了 [n] 个全局列表。 最多允许 [nn] 个。

自定义进程模板中定义的一个或多个 WIT 包含 GLOBALLIST 元素。 搜索你的 WIT 定义文件,并用 GLOBALLISTALLOWEDVALUES 元素替换所有 SUGGESTEDVALUES 元素。

TF402565:在全局列表 [globalListName] 中定义了 [n] 项。 最多允许 [nn] 个。

命名的 GLOBALLIST 元素包含的项数超过允许的数量。 要么减少 GLOBALLIST 元素中包含的列表项数量,要么将全局列表分割为两个或多个元素,使两个列表都不超过允许的最大项数。

进程配置

ProcessConfiguration.xml 定义文件必须符合 ProcessConfiguration XML 元素引用中所述的语法和规则。

TF402543:元素 [elementName] 要求将恰好一个工作流状态映射到元状态 [metastateName]

更新 ProcessConfiguration.xml 文件中命名元素中的 States 部分,以提供缺失的元状态映射或移除额外的映射。

错误示例

ProcessConfiguration.xml RequirementBacklog 元素缺少 type="Proposed" 的元状态映射。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Backlog items" singularName="Backlog item">
   <States>
      <State value="Committed" type="InProgress" />
      <State value="Done" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

解决示例

添加了缺少的元状态映射。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Backlog items" singularName="Backlog item">
   <States>
      <State value="New" type="Proposed" />
      <State value="Committed" type="InProgress" />
      <State value="Done" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

TF402547:元素 [elementName] 要求对于工作项类型 [witName],将至少一个状态映射到元状态 [metastateName]

查看为指定 WIT 定义的 WORKFLOW 状态,然后在 ProcessConfiguration.xml 文件中更新指定元素中的 States 部分,以便为命名 WIT 提供缺少的元状态映射。

TF402548:元素 [elementName] 要求将至少一个状态映射到元状态 [metastateName]

若要提供缺少的元状态映射,请在 ProcessConfiguration.xml 文件中的命名元素内更新 States 节。

错误示例

ProcessConfiguration.xml RequirementBacklog 元素缺少 type="InProgress" 的元状态映射。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Backlog items" singularName="Backlog item">
   <States>
      <State value="New" type="Proposed" />
      <State value="Done" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

解决示例

添加了缺少的元状态映射。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Backlog items" singularName="Backlog item">
   <States>
      <State value="New" type="Proposed" />
      <State value="Committed" type="InProgress" />
      <State value="Done" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

TF402550:元素 [elementName] 包含多个工作流状态 [stateName] 的元状态映射。

Metastate 值不能映射到多个工作流状态。

错误示例

ProcessConfiguration.xml RequirementBacklog 元素包含 value="Active" 的两个元状态映射。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Stories" singularName="Story">
   <States>
      <State value="Active" type="Proposed" />
      <State value="Active" type="InProgress" />
      <State value="Resolved" type="InProgress" />
      <State value="Closed" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

解决示例

已更正元状态映射。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Stories" singularName="Story">
   <States>
      <State value="New" type="Proposed" />
      <State value="Active" type="InProgress" />
      <State value="Resolved" type="InProgress" />
      <State value="Closed" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

TF402551:工作项类型 [witName] 未定义工作流状态 [stateName],这是必需的,因为 ProcessConfiguration 将其映射到元素 [elementName] 的元状态。

若要添加缺失的 STATETRANSITION 元素,可以更正 ProcessConfiguration.xml 文件或修正命名为 WIT 的 WORKFLOW 部分。

错误示例

ProcessConfiguration.xml RequirementBacklog 元素指定 value="Committed",但 UserStory.xml 未将 Committed 定义为一个状态。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Stories" singularName="Story">
   <States>
      <State value="New" type="Proposed" />
      <State value="Committed" type="InProgress" />
      <State value="Active" type="InProgress" />
      <State value="Resolved" type="InProgress" />
      <State value="Closed" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

解决示例

已移除 Committed 的 State 元素。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Stories" singularName="Story">
   <States>
      <State value="New" type="Proposed" />
      <State value="Active" type="InProgress" />
      <State value="Resolved" type="InProgress" />
      <State value="Closed" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

TF402552:元素 [elementName] 要求对于工作项类型 [witName],对于以下状态,将恰好一个状态映射到元状态 [metastateName][stateNames]

请查看 ProcessConfiguration.xml 文件中与命名元素相对应的 STATES 部分,并确保错误消息中列出的每个状态都存在并映射到一个元状态。

错误示例

ProcessConfiguration.xml RequirementBacklog 元素缺少 New 状态,该状态存在于 User Story 工作项类型中。 它应在映射到 STATEStype=Proposed" 列表中。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Stories" singularName="Story">
   <States>
      <State value="Active" type="InProgress" />
      <State value="Resolved" type="InProgress" />
      <State value="Closed" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

解决示例

元状态映射已更正。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Stories" singularName="Story">
   <States>
      <State value="New" type="Proposed" />
      <State value="Active" type="InProgress" />
      <State value="Resolved" type="InProgress" />
      <State value="Closed" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

TF402554:元素 [elementName] 指定了不支持的元状态 [metastateName]

查看 ProcessConfiguration.xml 文件中与命名元素对应的 STATES 部分,并移除或更正该命名的元状态。

错误示例

ProcessConfiguration.xml RequirementBacklog 元素包含 type=Proposed" 的拼写错误元状态映射。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Stories" singularName="Story">
   <States>
      <State value="New" type="Proposed" />
      <State value="Active" type="InProgress" />
      <State value="Resolved" type="InProgress" />
      <State value="Closed" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

解决示例

元状态映射已更正。

<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Stories" singularName="Story">
   <States>
      <State value="New" type="Proposed" />
      <State value="Active" type="InProgress" />
      <State value="Resolved" type="InProgress" />
      <State value="Closed" type="Complete" />
   </States>
 . . .
</RequirementBacklog >

TF402571:进程配置中缺失必需的元素 [elementName]

编辑 ProcessConfiguration.xml 文件以添加缺失的命名元素。

有关必需的元素,请参阅 ProcessConfiguration XML 元素参考

TF402572:在进程模板包中找不到指定的文件。

插件文件中指定要上传的文件在 zip 文件中缺失。 查看为上传指定的所有文件,并确保它们包含在进程 zip 文件中。

有关必需的元素,请参阅 ProcessConfiguration XML 元素参考

TF402574:ProcessConfiguration 未指定必需的 TypeField[typeField]

编辑 ProcessConfiguration.xml 文件以添加缺失的命名 TypeField 元素。

有关必需的 元素,请参阅 TypeField

示例

Scrum 进程指定以下 TypeField 元素。 如果缺少这些元素中的任何一个,则会收到错误TF402574。

<TypeFields>
    <TypeField refname="System.AreaPath" type="Team" />
    <TypeField refname="Microsoft.AzureDevOps.Scheduling.RemainingWork" type="RemainingWork" format="format h" />
    <TypeField refname="Microsoft.AzureDevOps.Common.BacklogPriority" type="Order" />
    <TypeField refname="Microsoft.AzureDevOps.Scheduling.Effort" type="Effort" />
    <TypeField refname="Microsoft.AzureDevOps.Common.Activity" type="Activity" />
    <TypeField refname="Microsoft.AzureDevOps.Feedback.ApplicationStartInformation" type="ApplicationStartInformation" />
    <TypeField refname="Microsoft.AzureDevOps.Feedback.ApplicationLaunchInstructions" type="ApplicationLaunchInstructions" />
    <TypeField refname="Microsoft.AzureDevOps.Feedback.ApplicationType" type="ApplicationType">
        <TypeFieldValues>
            <TypeFieldValue value="Web application" type="WebApp" />
            <TypeFieldValue value="Remote machine" type="RemoteMachine" />
            <TypeFieldValue value="Client application" type="ClientApp" />
        </TypeFieldValues>
    </TypeField>
</TypeFields>

TF402588:多个组合积压工作 [backlogNames] 已将 [backlogName] 定义为其父级。 父积压工作可能只有一个子积压工作。

只有一个子组合积压工作可以映射到单个父积压工作。

编辑 ProcessConfiguration 以更正父子级积压工作的规范。

错误示例

  <PortfolioBacklog category="Microsoft.EpicCategory" parent="Microsoft.InitiativeCategory" pluralName="Epics" singularName="Epic">
    ...
  </PortfolioBacklog>

  <PortfolioBacklog category="Microsoft.FeatureCategory" parent="Microsoft.InitiativeCategory" pluralName="Features" singularName="Feature">
    ...
  </PortfolioBacklog>

解决示例

要指向长篇故事积压工作,请更改功能积压工作的父级。

  <PortfolioBacklog category="Microsoft.EpicCategory" parent="Microsoft.InitiativeCategory" pluralName="Epics" singularName="Epic">
    ...
  </PortfolioBacklog>

  <PortfolioBacklog category="Microsoft.FeatureCategory" parent="Microsoft.EpicCategory" pluralName="Features" singularName="Feature">
    ...
  </PortfolioBacklog>

TF402589:组合积压工作 [backlogName] 引用了未定义的父级组合积压工作 [backlogName]

ProcessConfiguration.xml 定义包含一个引用未定义组合积压工作的 parent 值。

错误示例

  <PortfolioBacklog category="Microsoft.FeatureCategory" parent="Microsoft.EpicCategory" pluralName="Features" singularName="Feature">

解决示例

将长篇故事 PortfolioBacklog 添加到 ProcessConfiguration.xml 文件。

  <PortfolioBacklog category="Microsoft.EpicCategory" pluralName="Epics" singularName="Epic">
    <States>
      <State value="New" type="Proposed" />
      <State value="Active" type="InProgress" />
      <State value="Resolved" type="InProgress" />
      <State value="Closed" type="Complete" />
    </States>
    <Columns>
      <Column refname="System.WorkItemType" width="100" />
      <Column refname="System.Title" width="400" />
      <Column refname="System.State" width="100" />
      <Column refname="Microsoft.AzureDevOps.Common.BusinessValue" width="50" />
      <Column refname="Microsoft.AzureDevOps.CMMI.RequirementType" width="100" />
      <Column refname="System.Tags" width="200" />
    </Columns>
  </PortfolioBacklog>

TF402590:多个组合积压工作 [Backlog 1, Backlog 2] 未定义其父级。

只有一个组合积压工作(顶级积压工作)可能没有父级。 所有其他积压工作都必须包括一个 parent="Microsoft.FooCategory" 属性和值。

解决示例

  <PortfolioBacklog category="Microsoft.FeatureCategory" parent="Microsoft.EpicCategory" pluralName="Features" singularName="Feature">

402595:定义了过多的组合积压工作。 最多允许 5 个。

编辑 ProcessConfiguration.xml 文件,从 PortfolioBacklog 部分中移除多余的 PortfolioBacklogs 元素。

有关更多信息,请参阅 ProcessConfiguration XML 元素参考

TF400506:此元素定义表示 Bug 或缺陷的工作项的状态。

BugWorkItems 部分配置错误时,会发生此错误。 为 Microsoft.BugCategory 中包含的工作项类型定义的每个状态必须存在于 BugWorkItems 部分中定义的状态值集中。 例如,如果为 Bug 工作项类型定义的工作项类型定义了以下状态(新建、已批准、已提交、已完成),则 BugWorkItems 部分应配置如下:

  <BugWorkItems category="Microsoft.BugCategory" pluralName="Bugs" singularName="Bug">
    <States>
    <States>
      <State value="New" type="Proposed" />
      <State value="Approved" type="Proposed" />
      <State value="Committed" type="InProgress" />
      <State value="Done" type="Complete" />
    </States>
  </BugWorkItems>

有关更多信息,请参阅 ProcessConfiguration XML 元素参考

TF400507:每个工作项类型必须支持与 BugWorkItems 中定义的状态之一匹配的初始状态值。

Microsoft.BugCategory 中包含的工作项类型指定的初始状态不在 ProcessConfiguration XML 文件的 BugWorkItems 部分中时,会发生此错误。 修复命名工作项类型的 XML 定义工作流状态,或更新 BugWorkItems 节以包含缺失状态。

有关更多信息,请参阅 ProcessConfiguration XML 元素参考

TF400572:必须配置项目进程设置才能使用此功能。

此错误源于旧模板,在项目进程设置存在之前。 尝试将 ProcessConfiguration XML 文件 添加到进程模板。

工作项类型

TF402570:定义了 [n] 工作项类型。 允许上限 [witLimit]

你定义的 WIT 超出此进程中允许的数量。 查看你的 WorkItems.xml 文件,减少其中包含的 WORKITEMTYPE 语句数量,并从进程中移除相关的 WIT 定义文件。

TF402573:工作项类型 WIT 未指定必需的 refname 特性。

工作项类型(Bug、用户情景、任务等)需要 refname 特性。 refname 值必须是唯一的,并且不能包含任何保留的命名空间。 Azure DevOps保留了 System.XXX 和 Microsoft.AzureDevOps.XXX 这两个命名空间。

错误示例

<WORKITEMTYPE name="Bug">

解决示例

<WORKITEMTYPE name="Bug" refname="MyCompany.Bug">

TF402599:工作项类型引用名称 [refName] 无效,因为它使用了不允许的命名空间 [namespace]。

自定义字段和 WIT 的引用名称不能使用保留命名空间:系统。XXX 和 Microsoft.AzureDevOps。XXX.

编辑命名的 WIT 的 refname 特性。

错误示例

<FIELD name="Custom Field" refname="Microsoft.AzureDevOps.CustomField" type="String" />

解决示例

<FIELD name="Custom Field" refname="*CustomNamespace.CustomField*" type="String" />

TF402600:工作项类型引用名称 [refName] 无效。 工作项类型引用名称必须仅包含字母,不含空格,且至少包含一个句点 (.)。

WIT 引用名称必须遵循既定的命名约定:仅包含字母,不含空格,且至少包含一个句点 (.)。

对指定的 WIT 的 refname 属性进行编辑以满足命名要求。

错误示例

<WORKITEMTYPE name="Bug" refname="MyCompanyBug32">

解决示例

<WORKITEMTYPE name="Bug" refname="MyCompany.Bug">

工作项字段

TF402538:不支持字段规则 [ruleName]

编辑 WIT 定义以移除命名的规则。 以下规则不支持导入到 Azure DevOpsMATCHCANNOTLOSEVALUEPROHIBITEDVALUESNOTSAMEAS

TF402539:字段 [refName] 仅允许以下规则:[ruleNames]

编辑命名字段的 WIT 定义,移除所有不允许的规则。 查看 FIELDSWORKFLOW 两个部分。 大多数系统字段不允许指定规则。

用于系统字段的有效规则

名称 允许的规则
System.Title REQUIREDDEFAULT
System.Description REQUIREDDEFAULT
System.AssignedTo REQUIREDDEFAULTALLOWEXISTINGVALUEVALIDUSER
System.ChangedBy REQUIREDDEFAULTALLOWEXISTINGVALUEVALIDUSER

TF402540:工作项类型 [witName] 无效,因为它指定了全局列表 [GLOBALLIST]。 不支持全局列表。

Azure DevOps不支持全局列表。 在所有 WIT 定义文件中,用 GLOBALLISTALLOWEDVALUES 元素替换所有 LISTITEM 元素实例。

错误示例

<FIELD name="CustomField" refname="MyCompany.CustomField" type="String">
  <ALLOWEDVALUES>
    <GLOBALLIST name="Disciplines" />
  </ALLOWEDVALUES>
</FIELD>

解决示例

<FIELD name="CustomField" refname="MyCompany.CustomField" type="String">
  <ALLOWEDVALUES>
    <LISTITEM value="Architecture" />
    <LISTITEM value="Requirements" />
    <LISTITEM value="Development" />
    <LISTITEM value="Release Management" />
    <LISTITEM value="Project Management" />
    <LISTITEM value="Test" />
  </ALLOWEDVALUES>
</FIELD>

TF402541:工作项类型 [witName] 无效,因为它引用了全局列表 [globalListName]。 不支持全局列表。

Azure DevOps不支持全局列表。 在所有 WIT 定义文件中,用 GLOBALLISTALLOWEDVALUES 元素替换所有 LISTITEM 元素实例。

错误示例

<FIELD name="CustomField" refname="MyCompany.CustomField" type="String">
  <ALLOWEDVALUES>
    <GLOBALLIST name="Disciplines" />
  </ALLOWEDVALUES>
</FIELD>

解决示例

<FIELD name="CustomField" refname="MyCompany.CustomField" type="String">
  <ALLOWEDVALUES>
    <LISTITEM value="Architecture" />
    <LISTITEM value="Requirements" />
    <LISTITEM value="Development" />
    <LISTITEM value="Release Management" />
    <LISTITEM value="Project Management" />
    <LISTITEM value="Test" />
  </ALLOWEDVALUES>
</FIELD>

TF402542:自定义字段引用名称 [refName] 无效,因为它使用了不允许的命名空间 [namespace]

Azure DevOps 中保留了命名空间 System.XXX 和 Microsoft.AzureDevOps.XXX。 自定义字段和类型的引用名称不能使用这些命名空间。

要修复此错误,请在 WIT 定义文件中重命名命名字段的 refname 特性。

错误示例

<FIELD name="CustomField" refname="System.CustomField" type="String" />

  - OR - 

<FIELD name="CustomField" refname="Microsoft.AzureDevOps.CustomField" type="String" />

解决示例

<FIELD name="CustomField" refname="MyCompany.CustomField" type="String" />

TF402544:工作项类型 [witName] 中定义的字段 [refName] 需要包含值的 ALLOWEDVALUES 规则,以支持 ProcessConfiguration 中指定的元素 [elementName]

编辑命名 WIT 中的命名字段,以提供缺失的 ALLOWEDVALUES 规则,并参考命名元素以获取更多详细信息。

ProcessConfiguration.xml 文件元素 TypeField refname="Microsoft.AzureDevOps.Common.Activity" type="Activity" 要求在属于任务类别的所有 WIT 中为 Microsoft.AzureDevOps.Common.Activity 字段定义一个选取列表。

<TypeField refname="Microsoft.AzureDevOps.Common.Activity" type="Activity" />

如果将 bug 添加到任务类别,请确保 Bug.xml 文件包含命名字段,并指定 Task.xml 文件中为之定义的那个选取列表。

错误示例

Bug.xml 中定义了该字段,但没有定义选取列表。

      <FIELD name="Activity" refname="Microsoft.AzureDevOps.Common.Activity" type="String" reportable="dimension">
        <HELPTEXT>Type of work involved</HELPTEXT>
      </FIELD> 

解决示例

修正 Bug.xml

      <FIELD name="Activity" refname="Microsoft.AzureDevOps.Common.Activity" type="String" reportable="dimension">
        <HELPTEXT>Type of work involved</HELPTEXT>
        <SUGGESTEDVALUES>
          <LISTITEM value="Development"/>
          <LISTITEM value="Testing"/>
          <LISTITEM value="Requirements"/>
          <LISTITEM value="Design"/>
          <LISTITEM value="Deployment"/>
          <LISTITEM value="Documentation"/>
        </SUGGESTEDVALUES>
      </FIELD>

TF402545:元素 [elementName] 要求在工作项类型 [witName] 的定义中包含字段 [fieldName]

对于在 ProcessConfiguration.xml 文件的 FIELD 部分中为你指定的每个 field 元素,都应在命名 WIT 定义中包含一个相应的 AddPanel 元素。
还应在命名 WIT 的 Control 部分中包含一个 FORM 元素。

错误示例

ProcessConfiguration 指定两个自定义字段。 但是,这些字段未在 UserStory.xml 文件中定义。

<AddPanel>
   <Fields>
      <Field refname="System.Title" />
      <Field refname="Fabrikam.Product" />
      <Field refname="Fabrikam.Technology" />
   </Fields>
</AddPanel>

解决示例

已向 UserStory.xml 文件添加缺失的 FIELD 元素。

      <FIELD name="Product" refname="Fabrikam.Product" type="String" reportable="dimension">
     <FIELD name="Technology" refname="Fabrikam.Technology" type="String" reportable="dimension"> 

要支持 ProcessConfiguration 元素 [elementName],工作项类型 [witName] 必须定义 TypeField [typeField](字段引用名称 [refName])。

在 ProcessConfiguration 中,你创建了具有 TypeFieldTypeFieldValues。 在工作项类型中,引用同一个 TypeField

错误示例

ProcessConfiguration.xml

  <TypeField refname="Custom.ApplicationType" type="ApplicationType">
    <TypeFieldValues>
      <TypeFieldValue value="Web application" type="WebApp" />
      <TypeFieldValue value="Remote machine" type="RemoteMachine" />
      <TypeFieldValue value="Client application" type="ClientApp" />
    </TypeFieldValues>
  </TypeField>  

FeedbackRequest.xml 使用了 Microsoft.AzureDevOps.Feedback.ApplicationType 字段,而不是应使用的 Custom.ApplicationType 字段。

  <FIELD name="Application Type" refname="Microsoft.AzureDevOps.Feedback.ApplicationType" type="String">
    ...
  </FIELD>

解决示例

FeedbackRequest.xml

  <FIELD name="Application Type" refname="Custom.ApplicationType" type="String">
    ...
  </FIELD>

TF402556:要使字段 [refName] 定义完善,必须将其命名为 [fieldName] 并将其类型设置为 [fieldType]。 提供的 [refName][fieldName],类型是 [fieldType]

如果位于本地服务器并运行 tfsMigrator,则当进程过期且系统字段未正确定义时,将生成此错误。 在大多数情况下,应使用 witadmin /changefield 命令来正确地重命名字段。

保留字段示例

保留系统。XXX 和 Microsoft.AzureDevOps。XXX 字段需要 nametype 值。

字段 名称 类型
System.Id ID 整数
System.Title 标题 字符串
Microsoft.AzureDevOps.Scheduling.StoryPoints 故事点 双精度
Microsoft.AzureDevOps.Scheduling.RemainingWork 剩余工作 双精度
Microsoft.AzureDevOps.Scheduling.OriginalEstimate 初始估计 双精度
Microsoft.AzureDevOps.Scheduling.CompletedWork 已完成工作 双精度

错误示例

TF402556:要正确定义字段Microsoft.AzureDevOps.TCM.ReproSteps,必须将其命名为“重现步骤”并将其类型设置为 HTML。 提供的 Microsoft.AzureDevOps.TCM.ReproSteps 是“我的重现步骤”,类型为 HTML。

在 Bug.xml 中,易记字段名称已更改为“我的重现步骤”。

  <FIELD name="My Repro Steps" refname="Microsoft.AzureDevOps.TCM.ReproSteps" type="HTML">
    <HELPTEXT>How to see the bug. End by contrasting expected with actual behavior.</HELPTEXT>
  </FIELD> 

解决示例

Bug.xml

  <FIELD name="Repro Steps" refname="Microsoft.AzureDevOps.TCM.ReproSteps" type="HTML">
    <HELPTEXT>How to see the bug. End by contrasting expected with actual behavior.</HELPTEXT>
  </FIELD> 

TF402557:以下工作项类型中存在字段 [refName] 的不一致定义:[witName]。 确保对字段的所有引用都具有相同的 RefNameNameType

FIELD 具有相同易记名称的字段的元素定义在所有 WIT 中必须一致。 确保命名字段的每个 WIT 定义中的 refnamenametype 特性相同。

错误示例

Bug.xml

  <FIELD name="Hair Color" refname="MyCompany.CustomFields.HairColor" type="String" reportable="dimension" />

UserStory.xml

  <FIELD name="Hair Color 2" refname="MyCompany.CustomFields.HairColor" type="Double" reportable="dimension" />

请注意,属性 nametype 与 Bug.xml 工作项类型的属性不同。

解决示例

Bug.xml

  <FIELD name="Hair Color" refname="MyCompany.CustomFields.HairColor" type="String" reportable="dimension" />

UserStory.xml

  <FIELD name="Hair Color" refname="MyCompany.CustomFields.HairColor" type="String" reportable="dimension" />

TF402558:字段 [refName] 的定义与现有字段不一致。 type[typeName],但应为 [typeName]

编辑包含命名字段的 WIT 文件,以确保指定 type 特性值在所有 WIT 中保持一致。

TF402562:为工作项类型 [witName] 定义了 [n] 字段。 最多只能有 [fieldLimit] 个。

为命名的 WIT 定义了 [n] 字段,超过任意一个 WIT 允许的字段数。

编辑命名 WIT,移除多余的自定义字段,使字段总数在允许的限制范围内。

TF402563:为所有工作项类型定义总共 [n] 字段。 最多只能有 [fieldLimit] 个。

为进程中定义的所有 WIT 定义了 [n] 字段。 仅允许 [fieldLimit] ,其中包括 System。XXX 和 Microsoft.AzureDevOps。XXX 命名空间字段和自定义字段。

查看 FIELDSWORKFLOW 部分,确定要移除哪些自定义字段。

TF402566:为工作项类型 [witName] 定义 [n] 字段规则。 最多允许 [ruleLimit] 个。

为命名 WIT 定义了 [n] 字段规则,该规则超出了任意一个 WIT 允许的字段规则数。

编辑命名 WIT,移除多余的字段规则,使字段总数在允许的限制范围内。

TF402568:为工作项类型 [witName] 定义了 syncnamechanges="true"[n] 个字段。 最多允许 64 个。

为命名 WIT 定义的 syncnamechanges="true" 的字段数超过了允许的限制,其中包括 System.XXX 和 Microsoft.AzureDevOps.XXX 命名空间字段和自定义字段。

查看命名 WIT 的 FIELDS 部分,确定要移除或修改哪些自定义字段。

示例

  <FIELD name="Assigned To" refname="System.AssignedTo" type="String" reportable="dimension" syncnamechanges="true" >
    ...
  </FIELD>

TF402569:您在工作项类型 [witName] 中定义了 [n] 个字段 [fieldName] 的值。 最多只能定义 [listLimit] 个。

为命名 WIT 中的命名字段定义的 LISTITEM 元素数量超过了允许的限制。

编辑命名的 WIT,减少 LISTITEM 元素数量,使其不超过允许的最大值。

示例

  <FIELD name="Favorite Color" refname="MyCompany.CustomFields.FavColor" type="String" reportable="dimension">
    <ALLOWEDVALUES>
      <LISTITEM value="Color1" />
      <LISTITEM value="Color2" />
      <LISTITEM value="Color3" />
      . . . 
    </ALLOWEDVALUES>
  </FIELD>

注意 bug 和用户情景的 refname 值不同。

TF402584:不支持字段规则特性“for”或“not”。

导入到 Azure DevOps 服务的任何字段规则都不支持 "for""not" 属性。
查看 FIELDSWORKFLOW 部分中是否存在 "for""not" 特性,并移除它们。

错误示例

<FIELD name="Title">
  <READONLY for="Dev Team" not="Test Team" />
</FIELD>

解决示例

<FIELD name="Title">
  <READONLY />
</FIELD>

TF402593:字段 [fieldName] 不支持字段规则。

大多数 System 和 Microsoft.AzureDevOps 字段不支持规则。 有关详细信息,请参阅规则和规则评估

编辑包含命名字段的工作项类型的定义文件,以删除为其指定的字段规则。

TF402602:字段 [refName] 必须恰好具有这些值 [values]

  • 请勿更改保留字段:请勿更改在保留命名空间 System.*XXX* 中定义的任何字段和 Microsoft.AzureDevOps.*XXX*
  • 定义自定义字段:若要在选取列表字段中具有不同的值列表,请定义自己的自定义字段。

错误示例

Bug.xml 中定义了优先级字段,但值列表与预期不同。

    <FIELD name="Priority" refname="Microsoft.AzureDevOps.Common.Priority" type="Integer" reportable="dimension">
        <ALLOWEDVALUES expanditems="true">
        <LISTITEM value="0"/>
        <LISTITEM value="1"/>
        <LISTITEM value="2"/>
        </ALLOWEDVALUES>
        <DEFAULT from="value" value="2" />
    </FIELD>

解决示例

已更正的 Bug.xml 包括一个新字段

      <FIELD name="Priority" refname="Microsoft.AzureDevOps.Common.Priority" type="Integer" reportable="dimension">
        <HELPTEXT>Business importance. 1=must fix; 4=unimportant.</HELPTEXT>
        <ALLOWEDVALUES expanditems="true">
          <LISTITEM value="1"/>
          <LISTITEM value="2"/>
          <LISTITEM value="3"/>
          <LISTITEM value="4"/>
        </ALLOWEDVALUES>
        <DEFAULT from="value" value="2" />
      </FIELD>

      <FIELD name="Custom Priority" refname="Custom.Priority" type="Integer" reportable="dimension">
        <HELPTEXT>Business importance. 1=must fix; 4=unimportant.</HELPTEXT>
        <ALLOWEDVALUES expanditems="true">
          <LISTITEM value="0"/>
          <LISTITEM value="1"/>
          <LISTITEM value="2"/>
        </ALLOWEDVALUES>
        <DEFAULT from="value" value="2" />
      </FIELD>

VS402504:找不到用户或组 [project]\Group Name。 验证工作项类型定义中使用的用户和组是否存在。

不支持自定义项目范围组。 只能引用帐户级范围的组。

错误示例

Bug.xml 引用了项目范围组。

... "[project]\Organization Leaders"

解决示例

创建新的帐户(集合)级组“Organization Leaders”,并在 XML 中相应地引用它。

... "[global]\Organization Leaders"

注意

在导入过程中,新创建的全局组可能需要一些时间才能被识别。

TF237094:字段名称“[fieldName]”已被字段“[refName]”使用,因此不能被字段“[refName]”使用。

字段名称已被其他字段占用。 更改字段的名称。

错误示例

TF237094: Field name 'External ID' is used by the field 'Custom.ExistingField.ExternalID', so it cannot be used by the field 'Custom.NewField.ExternalID'.

解决示例

更改 Custom.NewField.ExternalID 的字段名称

<FIELD name="External ID" refname="Custom.NewField.ExternalID" type="string" reportable="dimension" />

工作项布局

VS403104:工作项类型 [witName] 引用所有布局中不包含的必需字段 [refName]。

如果工作项类型中有一个必需字段在 <Layout> 节点中被引用但未在 <WebLayout> 中被引用,会生成此警告。 <WebLayout> 用于修改新窗体的布局。

VS403073:组 & <Group Name>:违反了以下规则:组只能包含一个前面带有控件标签的 HTML 或 WebPage 控件。

在新的窗体布局中,一个组只能包含一个 HTMLFieldControl 或 WebPageControl。

错误示例

<Section>
    <Group Label="Description:">
        <Control Label="Reason For Request:" Type="HtmlFieldControl" FieldName="System.Description" />
        <Control Label="Business Case For Request:" Type="HtmlFieldControl" FieldName="MB.BusinessCase" />
    </Group>
</Section>

若要解决此错误,请创建两个单独的组,每个组包含一个控件。

解决示例


<Section>
    <Group Label="Reason for Request">
        <Control Label="Reason For Request:" Type="HtmlFieldControl" FieldName="System.Description" />       
    </Group>
    <Group Label="Business Case">
        <Control Label="Business Case For Request" Type="HtmlFieldControl" FieldName="Custom.BusinessCase" />       
    </Group>
</Section>

错误示例

  <Control Type="FieldControl" FieldName="customfield.foo" Label="Foo" LabelPosition="Left">
    <Link UrlRoot="http://www.visualstudio.microsoft.com/team-services/" />
  </Control>

解决示例

  <Control Type="FieldControl" FieldName="System.Title" LabelPosition="Left" Label="Title 1"  
    <LabelText>  
        <Text>  
          <Link UrlRoot="http://www.visualstudio.microsoft.com/team-services/" />  
              Title 2  
        </Text>  
    </LabelText>  
  </Control>  

工作流定义

TF402567:为工作项类型 [witName] 定义 [n] 工作流状态。 最多允许 [stateLimit] 个。

为命名 WIT 定义了 [n] 工作流状态,该状态超过了任意一个 WIT 允许的工作流状态数。

为了将状态总数量减少到允许的上限以内,请编辑命名的 WIT 中的 WORKFLOW 部分,并删除多余的 STATE 元素。

TF402578:字段 [refName] 指定的易记名称 [friendlyName] 已被字段 [refName] 使用。 在所有字段定义中,易记名称必须是唯一的。

字段名称在工作项类型中必须是唯一的。

错误示例

  <FIELD name="Foo" refname="MyCompany.CustomFields.Foo" type="String" reportable="dimension" />
  <FIELD name="Foo" refname="MyCompany.CustomFields.Bar" type="String" reportable="dimension" />

请注意,有两个字段的名称 <FIELD name="Foo"

解决示例

  <FIELD name="Foo" refname="MyCompany.CustomFields.Foo" type="String" reportable="dimension" />
  <FIELD name="Bar" refname="MyCompany.CustomFields.Bar" type="String" reportable="dimension" />

TF402579:在以下工作项类型的不同字段中,多次使用了名称 [friendlyName][witNames]。 字段的名称在项目集合中必须是唯一的。

引用相同 refname="MyCompany.FieldName" 的字段必须具有相同的易记名称 FIELD name="fieldname" 值。

错误示例

进程 A,Bug.xml

  <FIELD name="Foo" refname="MyCompany.CustomFields.Foo" type="String" reportable="dimension" />  

进程 B,Bug.xml

  <FIELD name="Bar" refname="MyCompany.CustomFields.Foo" type="String" reportable="dimension" />  

由于这两个字段共享相同的引用名称,refname="MyCompany.CustomFields.Foo",因此还必须在导入或导入到Azure DevOps的所有进程中指定相同的友好名称<FIELD name="Foo"

TF402580:只能对单个工作项类型使用名称 [witName]

WIT 易记名称 WORKITEMTYPE name="Name" 在进程中必须是唯一的。

错误示例

我的工作项 A.xml

  <WORKITEMTYPE name="My Work Item" refname="My.MyWorkItemA">

我的工作项 B.xml

  <WORKITEMTYPE name="My Work Item" refname="My.MyWorkItemB">

注意两个工作项类型的 WORKITEMTYPE name= 是相同的。

解决示例

我的工作项 A.xml

  <WORKITEMTYPE name="My Work Item A" refname="My.MyWorkItemA">

我的工作项 B.xml

  <WORKITEMTYPE name="My Work Item B" refname="My.MyWorkItemB">

TF402581:只能对单个工作项类型使用 refname [refName]

WIT 引用名称 refname="value" 在进程中必须是唯一的。

错误示例

Bug.xml

  <WORKITEMTYPE name="Bug" refname="MyCompany.Name">

UserStory.xml

  <WORKITEMTYPE name="User Story" refname="MyCompany.Name"> 

两个 refname 值都等于“MyCompany.Name”

解决示例

Bug.xml

  <WORKITEMTYPE name="Bug" refname="MyCompany.Bug">

UserStory.xml

  <WORKITEMTYPE name="User Story" refname="MyCompany.UserStory"> 

TF402582:工作项类型 [witName] 包含不支持的自定义控件 [controlName]。

Azure DevOps Services 不支持自定义控件。 查看命名 WIT 的 FORM 部分,移除所有定义的自定义控件。

错误示例

Type="OneViewMultiValueControl" 指定了一个自定义控件。 将此自定义控件删除或替换为受支持的控件。

    <Group Label="Engineering Alignment">
        <Column PercentWidth="100">
            <Control FieldName="Fabrikam.Content.Product" Type="FieldControl" Label="Product" LabelPosition="Left" />
            <Control FieldName="Fabrikam.Content.Release" Type="FieldControl" Label="Milestone" LabelPosition="Left" />
            <Control FieldName="Fabrikam.Content.Technology" Type="FabrikamMultiValueControl" Label="Technology" LabelPosition="Left" />
        </Column>
    </Group>