Ошибки при попытке обновить значения поля команды

Я получаю одну из нескольких ошибок, когда пытаюсь использовать Client 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: значение поля команды по умолчанию должно быть одним из разрешенных значений поля команды этой команды.

К сожалению, документация не содержит ни объяснений правил проверки для этого свойства, ни указаний о том, какое значение следует использовать. Кажется, это указывает имя проекта + путь к области, но, как мы видим выше, это не работает.

Вот это , но это противоречит (неясному) намеку в документации. Там есть это, но я проверил, что область существует до попытки обновления.

Какое значение я должен использовать для этого свойства?


person InteXX    schedule 29.12.2020    source источник


Ответы (1)


Приведенная выше ошибка The default team field value must be one of this team's allowed team field values означает, что путь к области, определенный вами в свойстве TeamFieldValuesPatch.DefaultValue, также должен быть включен в свойство TeamFieldValuesPatch.Values.

Если путь области, определенный для DefaultValue, не может быть найден в файле Values. Ошибка выше будет выброшена. См. ниже пример в С#

 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;
person Levi Lu-MSFT    schedule 29.12.2020
comment
И снова неадекватная документация и вводящие в заблуждение сообщения об ошибках мешают продуктивной разработке. Хорошо, это сработало. Спасибо. К вашему сведению, благодаря этому упражнению я также обнаружил, что использование графического интерфейса пользователя для включения всех подобластей пути к корневой области устраняет необходимость добавления новой области в команду перед использованием этой области для рабочего элемента. Так что можно сказать, что эта часть усилий в конечном счете оказалась ненужной. Но тем не менее это был хороший опыт обучения. - person InteXX; 29.12.2020