获取签入的TFS关联工作项(非变更集)

时间:2018-12-27 16:43:28

标签: c# visual-studio tfs tfvc

我正在为TFS创建服务器端代码审查策略,目前我可以将其用于通过Visual Studio运行的任何签入,但是当有人尝试通过Web UI签入时,则无效。

策略正在签入中查找相关的工作项,然后浏览该工作项以确认其满足特定要求。我可以通过Visual Studio签入的通道获取关联的工作项

public EventNotificationStatus ProcessEvent(IVssRequestContext requestContext, NotificationType notificationType, object notificationEventArgs, out int statusCode, out string statusMessage, out ExceptionPropertyCollection properties)
        {
            statusCode = 0;
            statusMessage = string.Empty;
            properties = new ExceptionPropertyCollection();

            var checkinNotification = notificationEventArgs as CheckinNotification;
            if (notificationType == NotificationType.DecisionPoint && notificationEventArgs is CheckinNotification)
            {

                bool isNullComment = false;
                bool isCheckinContains = false;

                var service = requestContext.GetService<ILocationService>();

                TfsTeamProjectCollection tfsTeamProjectCollection = new TfsTeamProjectCollection(GetTfsUri(requestContext));

                WorkItemStore workitemStore = tfsTeamProjectCollection.GetService<WorkItemStore>();

                var changes = checkinNotification.GetSubmittedItems(requestContext);

                isCheckinContains = changes.Any(change => change.ToUpper().Contains("$/"));
                if (isCheckinContains)
                {
                    isNullComment = string.IsNullOrEmpty(checkinNotification.Comment.ToString());

                    //Read all associated workitem id's 
                    var assoWorkItems = checkinNotification.NotificationInfo.WorkItemInfo.Select(x => x.Id);
                }
            }
        }

但是,这不适用于Web UI。在Visual Studio和Web UI上运行代码时,我注意到的主要区别是请求上下文指向一个非常不同的URL。

Visual Studio请求上下文URL:http://localhost:8080/tfs/DefaultCollection/VersionControl/v5.0/repository.asmx

Web Ui请求上下文:http://localhost:8080/tfs/DefaultCollection/_apis/tfvc/changesets

我认为我需要使用其他名称空间和方法来通过Web UI访问签入中的信息。

我一直在尝试使用“ Microsoft.VisualStudio.Services.WebApi”命名空间从Web UI获取数据,但是我无法在线找到有关如何获取试图处理的签入信息的任何信息

1 个答案:

答案 0 :(得分:0)

如您所见,Web编辑体验使用一组不同的API。使用更新的API时,服务器端策略显然不会得到处理,因为服务器端插件是受支持但并非真正推荐的标题朝着弃用的功能。

因此,基本上,您的政策不适用于Web UI,也没有办法实现。您可以建议Microsoft通过在UserVoice上发布一些内容来增加支持,仅此而已。