c# - 如何在工作项更改事件中获取对 TFS 工作项的引用?

标签 c# tfs tfs-workitem tfs-events

看起来这会非常简单,但我正在努力寻找我需要的东西。

我正在实现 TFS 2013 事件处理程序,并且只想获取对引发更改事件的工作项的引用。获得标题似乎很容易,但我在事件签名对象中找不到属性或方法,这些属性或方法为我提供了对 WorkItem 对象的引用或我需要去查询它的信息(例如 ID) .

public EventNotificationStatus ProcessEvent(
         TeamFoundationRequestContext requestContext, 
         NotificationType notificationType, 
         object notificationEventArgs, 
         out int statusCode, 
         out string statusMessage, 
         out ExceptionPropertyCollection properties)
    {          
        var ev = notificationEventArgs as WorkItemChangedEvent;
        string WorkItemTitle = ev.WorkItemTitle; /* easy enough */

        /*********** need help with this bit *********/
        int ChangedWorkItemID = ???
              OR
        WorkItem ChangedWorkItem= ???
    }

注意:此代码已被精简到最基本的部分,以便于阅读和专注于手头的问题。

最佳答案

我找到了一种方法来做到这一点。它不像我想要的那样优雅,但它确实有效。如果有人有更好的答案,我绝对感兴趣。

以下是对有相同问题的其他人有益的方法。

您可以从 notificationEventArgs(WorkItemChangedEvent 类型)的 CoreFields.IntegerFields 集合中获取工作项的 ID,并将其传递到事件处理程序.使用它,您可以从 WorkItemStoreGetWorkItem 方法中获取 WorkItem

注意:您想要的项目的字段名称为“ID”,它似乎始终是集合中的元素 0,但我不相信它总是如此,所以我使用 name 属性搜索LINQ 以防万一。这是整个事件的代码片段。

IntegerField idField =  ev.CoreFields.IntegerFields
                          .Where<IntegerField>(field => field.Name.Equals("ID"))
                          .FirstOrDefault<IntegerField>();

int WorkItemID=  idField.NewValue;

//Assuming you have an initialized WorkItemStore Object here
 workItemStore.GetWorkItem(WorkItemID);

关于c# - 如何在工作项更改事件中获取对 TFS 工作项的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28133095/

相关文章:

c# - 使用c#在MSChart中显示系列的具体方法

tfs - 我可以从触发 TFS 中的 CI 构建中排除文件吗?

TFS 发布管理有一个卡在进行中的发布

git - TFS GIT Pull 请求报告?

azure-devops - 如何在 VSTS/Azure DevOps 中设置状态更改时分配给

c# - 在 C# 中,try-catch 应该用于数字测试吗?

c# - 获取 .Net XML 文档以返回字典的特定类型

c# - 只锁定 1 个操作?

tfs - 任务到用户故事

TFS 2010 : Change 'Work Item' type from 'Product Backlog Item' to 'Task' - how to?