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(如果适用)]
- 自定义命名空间:[您的自定义命名空间(如果适用)]
你能帮我排查此问题吗? 请提供以下步骤说明:
- 确定验证错误的根本原因
- 修复 XML 配置或进程定义
- 验证更改是否解决了验证问题
上下文:这是使用托管 XML 进程模型将自定义进程模板导入Azure DevOps服务。 此错误可能与工作项类型定义、字段配置、进程配置、类别或 XML 架构冲突相关。 `
Copilot由 AI 提供支持,因此可能会带来惊喜和错误。 有关详细信息,请参阅 Copilot常规使用常见问题解答。
信息消息 - 无需操作
TF402555:字段 [refName] 已删除。
导入的流程不包括正在更新流程中的指定字段,因此该字段将在更新操作中被删除。
方案示例
- 向 Bug.xml 工作项添加自定义字段
<FIELD name="Foo" refname="MyCompany.CustomFields.Foo" type="String" reportable="dimension" /> - 导入流程
- 从 Bug.xml 中删除字段
- 导入更新的流程
系统会显示有关要删除的字段的信息消息。
TF402555: Field MyCompany.CustomFields.Foo will be deleted
TF402591:在现有流程 [processName] 中,引用名称为 [refName] 的字段不能从“[name2]”重命名为“[name1]”。
你正在导入的流程包含一个重命名的字段,该字段在当前流程中使用相同的 refname。
无法重命名字段名称。
TF402598:工作项类型 [refName] 已删除。
要更新的进程不包括当前进程中存在的命名 WIT。 作为更新现有流程的一部分,系统会从当前流程中删除命名的 WIT。
方案示例
系统会显示有关删除的信息消息。
TF402598: Work item type My.LSI will be deleted
TF402601:工作项类型 [witName] 已从 [name2] 重命名为 [name1]。
该进程包含重命名的 WIT。 WIT 在现有进程中重命名。
你正在更新的进程包含根据当前进程中的名称重命名的 WIT。
作为更新现有流程的一部分,系统会重命名当前流程中的 WIT。 现有项目中引用该流程的所有工作项也会被重命名。
方案示例
-
创建名为“LSI”的新工作项类型
<WORKITEMTYPE name="LSI" refname="My.LSI"> - 导入流程
- 将 LSI 工作项类型重命名为“实时站点事件”
<WORKITEMTYPE name="Live Site Incident" refname="My.LSI"> - 导入更新的流程
系统会显示有关要重命名的 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 属性仅允许以下值:ProjectModelHierarchy 和 ProjectLifecycle。
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 元素仅允许以下属性:name、value 和 isFile。
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>
链接类型
注意
当前导入流程不支持自定义链接类型。
TF402561:定义了 [n] 自定义链接类型。 最多允许 [nn] 个。
查看你的 WorkItems.xml 插件文件中的所有 LINKTYPE 元素语句。
删除与自定义链接类型相关的语句,以免超过允许的限制。
然后,从 LinkTypes 文件夹中删除相应的链接类型定义文件。
此外,请移除对 LinksControlOptions 部分下 FORM 部分内添加到 WIT 定义的自定义链接类型的任何引用。
TF402583:自定义链接类型 [name] 无效,因为不支持自定义链接类型。
查看你的 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 定义文件,并用 GLOBALLIST 或 ALLOWEDVALUES 元素替换所有 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] 的元状态。
若要添加缺失的 STATE 和 TRANSITION 元素,可以更正 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 工作项类型中。 它应在映射到 STATES 的 type=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 元素。
示例
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 DevOps:MATCH、CANNOTLOSEVALUE、PROHIBITEDVALUES 和 NOTSAMEAS。
TF402539:字段 [refName] 仅允许以下规则:[ruleNames]。
编辑命名字段的 WIT 定义,移除所有不允许的规则。 查看 FIELDS 和 WORKFLOW 两个部分。
大多数系统字段不允许指定规则。
用于系统字段的有效规则
| 名称 | 允许的规则 |
|---|---|
| System.Title |
REQUIRED、DEFAULT |
| System.Description |
REQUIRED、DEFAULT |
| System.AssignedTo |
REQUIRED、DEFAULT、ALLOWEXISTINGVALUE、VALIDUSER |
| System.ChangedBy |
REQUIRED、DEFAULT、ALLOWEXISTINGVALUE、VALIDUSER |
TF402540:工作项类型 [witName] 无效,因为它指定了全局列表 [GLOBALLIST]。 不支持全局列表。
Azure DevOps不支持全局列表。
在所有 WIT 定义文件中,用 GLOBALLIST 和 ALLOWEDVALUES 元素替换所有 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 定义文件中,用 GLOBALLIST 和 ALLOWEDVALUES 元素替换所有 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 中,你创建了具有 TypeField 的 TypeFieldValues。 在工作项类型中,引用同一个 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 字段需要 name 和 type 值。
| 字段 | 名称 | 类型 |
|---|---|---|
| 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]。 确保对字段的所有引用都具有相同的 RefName、Name 和 Type。
FIELD 具有相同易记名称的字段的元素定义在所有 WIT 中必须一致。
确保命名字段的每个 WIT 定义中的 refname、name 和 type 特性相同。
错误示例
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" />
请注意,属性 name 和 type 与 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 命名空间字段和自定义字段。
查看 FIELDS 和 WORKFLOW 部分,确定要移除哪些自定义字段。
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" 属性。
查看 FIELDS 和 WORKFLOW 部分中是否存在 "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>
TF402594:文件违反架构并出现以下错误:元素“Control”不能包含子元素“Link”,因为父元素的内容模型为空。
错误示例
<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>