Roe*_*elF 18 c# api object-model tfs2012 tfs-code-review
我正试图找到一种方法来查找有关TFS2012中的代码审查请求/响应项的详细信息.
我可以通过以下方式查询所有代码审查请求/响应项:
const string TfsUri = "http://mytfsserver:8080/tfs/Default ProjectCollection";
var tfs = new TfsTeamProjectCollection(new Uri(TfsUri));
var store = tfs.GetService<WorkItemStore>();
var versionStore = tfs.GetService<Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer>();
var queryText = "SELECT [System.Id],
FROM WorkItems
WHERE [System.WorkItemType] = 'Code Review Request'
or [System.WorkItemType] = 'Code Review Response'";
var query = new Query(store, queryText);
var result = query.RunQuery().OfType<WorkItem>();
Run Code Online (Sandbox Code Playgroud)
这给了我一个WorkItem类型列表.当我遍历result.FirstOrDefault().Fields属性时,它确实给了我一些有关ShelveSet的有用信息,它与Code Review相关,即"Associated Context".使用此信息,我可以查询ShelveSet:
var versionStore = tfs.GetService<VersionControlServer>();
var shelveset = versionStore.QueryShelvesets("someCodeReviewId_xxxx","someUserName");
Run Code Online (Sandbox Code Playgroud)
这给了我一个ShelveSet项目,但那就是我被困住的地方.
我查看Microsoft.TeamFoundation.CodeReview了两者Microsoft.TeamFoundation.CodeReview.Components和Microsoft.TeamFoundation.CodeReview.Controls库提供的命名空间,但这对我没有任何帮助.
我的问题是:如何通过TFS API找到代码审查期间ShelveSet上的实际注释(包括一般注释和文件注释)?
Nim*_*joe 15
我们有一个新的要求来从TFS中提取代码评论意见,这是我们实施的一个简短示例.必须通过另一种方法查询workItemId.您甚至可以在Visual Studio中或通过UI中的TFS查询进行查找.这是可用内容和我们正在使用的内容的一小部分.在通过MSDN挖掘后,我发现此链接很有用.
public List<CodeReviewComment> GetCodeReviewComments(int workItemId)
{
List<CodeReviewComment> comments = new List<CodeReviewComment>();
Uri uri = new Uri(URL_TO_TFS_COLLECTION);
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);
}
}
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; }
}
Run Code Online (Sandbox Code Playgroud)
Ras*_*ssi 13
我没有代码示例,但根据此讨论,您应该能够使用Microsoft.TeamFoundation.Discussion.Client命名空间中的功能获取代码审阅注释.
具体来说,可以通过DiscussionThread类访问注释.您应该能够使用IDiscussionManager查询讨论.