问题描述
当我尝试使用客户端 SDK 将现有区域添加到现有团队时,出现多个错误中的任何一个。这是我的代码:
Using oTeamClient As TeamHttpClient = Utils.Connection.GetClient(Of TeamHttpClient)
Using oWorkClient As WorkHttpClient = Utils.Connection.GetClient(Of WorkHttpClient)
ovalue = New TeamFieldValue With {.Value = Area.Path,.IncludeChildren = False}
oTeams = oTeamClient.GetTeamsAsync(ProjectName).Result
oTeam = oTeams.Single(Function(Team) Team.Name.StartsWith(ProjectName))
oPatch = New TeamFieldValuesPatch With {.Values = {ovalue},.DefaultValue = $"{ProjectName}\{Area.Path}"}
oContext = New TeamContext(ProjectName,oTeam.Name)
Return oWorkClient.UpdateTeamFieldValuesAsync(oPatch,oContext).Result
End Using
End Using
问题是我不知道用什么来表示 TeamFieldValuesPatch.DefaultValue
。
以下是我的尝试以及每次尝试的相应错误消息:
- 无:“默认值”
- 空字符串:“VssServiceException:默认团队字段值必须是该团队允许的团队字段值之一。”
- 项目名称:“VssServiceException:默认团队字段值必须是该团队允许的团队字段值之一。”
- 区域路径:“VssServiceException:TF400499:您尚未设置团队字段。”
- 项目名称 + 区域路径:“VssServiceException:默认团队字段值必须是该团队允许的团队字段值之一。”
不幸的是,the documentation 没有提供此属性的验证规则的解释,也没有提供我们应该使用什么值的任何指导。 似乎表示项目名称+区域路径,但正如我们在上面看到的那样不起作用。
有 this,但它与文档中的(晦涩的)提示相冲突。有 this,但我已在尝试更新之前验证该区域存在。
我应该为这个属性使用什么值?
解决方法
上面的错误 The default team field value must be one of this team's allowed team field values
表示
您在 TeamFieldValuesPatch.DefaultValue
属性中定义的区域路径也必须包含在 TeamFieldValuesPatch.Values
属性中。
如果在 DefaultValue
中找不到为 Values
定义的区域路径。以上错误将被抛出。请参阅下面的 c# 示例
VssConnection _connection = new VssConnection(accountUri,new VssBasicCredential(string.Empty,personalAccessToken));
WorkHttpClient workClient = _connection.GetClient<WorkHttpClient>();
TeamFieldValuesPatch patch = new TeamFieldValuesPatch();
patch.DefaultValue = "Project\\DefaultAreaPath";
List<TeamFieldValue> values = new List<TeamFieldValue> {
#defaultValue must be included in the values
new TeamFieldValue { Value = "Project\\DefaultAreaPath",IncludeChildren = false },new TeamFieldValue { Value = "Project\\OtherAreaPath",IncludeChildren = false }
};
patch.Values = values;
TeamContext team = new TeamContext("Project","Team");
var res = workClient.UpdateTeamFieldValuesAsync(patch,team).Result;