Получить историю комментариев Code Review из TFS 2018

Комментарии к обзору кода TFS Я использую TFS 2018 On Premise.

Есть ли способ получить список комментариев к обзору (как показано в Visual Studio) с помощью API или запроса TFS.


person Kuldeep Singh    schedule 13.05.2020    source источник


Ответы (1)


Этот случай предлагает решение, вы можете проверить это:

У вас должна быть возможность получить комментарии обзора кода с помощью функций в Microsoft.TeamFoundation.Discussion.Client.

В частности, комментарии доступны через DiscussionThread класс. И вы должны иметь возможность запрашивать обсуждения с помощью IDiscussionManager.

Фрагмент кода выглядит следующим образом:

using Microsoft.TeamFoundation.Discussion.Client;
using System;
using System.Collections.Generic;

namespace GetCodeReviewComments
{
   public class ExecuteQuery
    {
        public List<CodeReviewComment> GetCodeReviewComments(int workItemId)
        {
            List<CodeReviewComment> comments = new List<CodeReviewComment>();

            Uri uri = new Uri("http://tfs2018:8080/tfs/defaultcollection");
            TeamFoundationDiscussionService service = new TeamFoundationDiscussionService();
            service.Initialize(new Microsoft.TeamFoundation.Client.TfsTeamProjectCollection(uri));
            IDiscussionManager discussionManager = service.CreateDiscussionManager();

            IAsyncResult result = discussionManager.BeginQueryByCodeReviewRequest(workItemId, QueryStoreOptions.ServerAndLocal, new AsyncCallback(CallCompletedCallback), null);
            var output = discussionManager.EndQueryByCodeReviewRequest(result);

            foreach (DiscussionThread thread in output)
            {
                if (thread.RootComment != null)
                {
                    CodeReviewComment comment = new CodeReviewComment();
                    comment.Author = thread.RootComment.Author.DisplayName;
                    comment.Comment = thread.RootComment.Content;
                    comment.PublishDate = thread.RootComment.PublishedDate.ToShortDateString();
                    comment.ItemName = thread.ItemPath;
                    comments.Add(comment);
                    Console.WriteLine(comment.Comment);
                }
            }

            return comments;
        }

        static void CallCompletedCallback(IAsyncResult result)
        {
            // Handle error conditions here
        }

        public class CodeReviewComment
        {
            public string Author { get; set; }
            public string Comment { get; set; }
            public string PublishDate { get; set; }
            public string ItemName { get; set; }
        }
    }
}
person Cece Dong - MSFT    schedule 14.05.2020
comment
Спасибо Сесе Донг за ваш ответ. Я пробовал это с помощью приложения .net core conole. Включены Microsoft.TeamFoundationServer.Client Version = 16.153.0 и Microsoft.TeamFoundationServer.ExtendedClient Version = 16.153.0, но ни один из них не помог в разрешении Microsoft.TeamFoundation.Discussion.Client. - person Kuldeep Singh; 15.05.2020
comment
Вы можете попробовать консольное приложение .NET framework, оно будет работать. - person Cece Dong - MSFT; 15.05.2020
comment
Конечно, спасибо, я попробую с .net framework. Мне было интересно, есть ли у нас пакет nuget для ядра .NET? - person Kuldeep Singh; 15.05.2020
comment
Пакет Microsoft.TeamFoundationServer.ExtendedClient плохо совместим с ядром .NET. Некоторые функции можно использовать в приложении .net core, а некоторые нет. Поэтому вместо этого рекомендуется использовать приложение .NET framework. - person Cece Dong - MSFT; 15.05.2020
comment
Большое спасибо @Cece. Цени свое время. - person Kuldeep Singh; 15.05.2020