从TFS 2015 Update 3迁移至VSTS时Value Area字段InvalidEmpty错误求助
解决TFS 2015 Update3到VSTS迁移时Value Area字段空值错误
我之前帮团队处理过类似的迁移问题,这个InvalidEmpty错误看起来有点矛盾——明明查询显示所有工作项的Value Area都是"Business",但迁移工具却报空值。下面是几个我亲测有效的排查和解决方向:
一、先排查源数据的“隐藏空值”
- 虽然查询结果显示都是"Business",但有些工作项的这个字段可能是通过系统规则自动填充的默认值,而非实际存储了值。你可以导出一批工作项到Excel,查看字段的原始值——Excel里会显示真实存储的内容,不会套用默认规则。
- 检查迁移范围是否包含了已关闭/废弃的工作项:这类工作项有时会被系统自动清空部分字段值,但查询视图依然显示默认值。可以调整迁移查询,临时排除已关闭状态的工作项,再试一次迁移。
二、配置迁移工具的默认值映射
如果你用的是官方的Azure DevOps迁移工具,可以在迁移的字段映射文件里给Value Area字段设置强制默认值,覆盖空值情况:
<FieldMap Type="DefaultValue"> <SourceField>Microsoft.VSTS.Common.ValueArea</SourceField> <TargetField>Microsoft.VSTS.Common.ValueArea</TargetField> <DefaultValue>Business</DefaultValue> </FieldMap>
添加这段配置后,迁移工具会自动给任何源字段为空的工作项填充"Business",避免触发必填项空值错误。
三、检查目标VSTS的工作项定义
- 目标VSTS项目里,Value Area字段可能被设置为必填项,但源TFS 2015里这个字段未必是必填的。你可以临时修改目标项目的工作项类型定义(比如通过Process Editor),把Value Area设为非必填,完成迁移后再改回必填状态。
- 另外,确认目标项目的工作项类型里确实存在Value Area字段,且字段引用名称和源TFS一致(都是
Microsoft.VSTS.Common.ValueArea),避免因字段不匹配导致的空值问题。
四、验证单个失败工作项
找到迁移日志里报错的工作项ID,在源TFS里直接打开该工作项,查看Value Area字段的实际值:
- 有时候查询视图可能用了自定义显示名称,实际字段可能存在重名(比如自定义字段和系统字段同名),导致查询结果显示的不是真实的系统字段值。
- 也可以用TFS的REST API直接获取字段值,比如调用
http://<tfs-server>/DefaultCollection/_apis/wit/workitems/<id>?fields=Microsoft.VSTS.Common.ValueArea,确认返回的字段值是否真的非空。
内容的提问来源于stack exchange,提问作者logicatwork
相关产品推荐
相关产品推荐

