尝试更新团队字段值时出错

问题描述

当我尝试使用客户端 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;