首页 > 解决方案 > 尝试更新团队字段值时出错

问题描述

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

这是我尝试过的内容以及每次尝试的相应错误消息:

不幸的是,文档没有解释这个属性的验证规则,也没有提供任何关于我们应该使用什么值的指导。它似乎表示项目名称 + 区域路径,但正如我们在上面看到的那样,它不起作用。

this,但它与文档中的(晦涩)提示冲突。有这个,但我已经在尝试更新之前验证了该区域存在。

我应该为这个属性使用什么值?

标签: azure-devopssdkazure-devops-rest-apiazure-devops-server-2019

解决方案


上述错误The default team field value must be one of this team's allowed team field values意味着您在属性中定义的区域路径也TeamFieldValuesPatch.DefaultValue必须包含在TeamFieldValuesPatch.Values属性中。

如果DefaultValueValues. 上述错误将被抛出。请参阅下面的 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;

推荐阅读