【问题标题】:How to get Whats New field value from TFS如何从 TFS 获取 Whats New 字段值
【发布时间】:2014-03-22 17:56:38
【问题描述】:

我无法通过 c# 在 TFS 上找到 Whats New 字段。我可以获取 WorkItem,但是 Whats New 字段在哪里?

如何获得WorkItem:

 public WorkItemCollection GetAllWorkItemsFromCollection(String collectionName, String date)
    {
        String collNameTemp = String.Empty;
        try
        {

            var collNodes = this.GetAllCollectionsRaw();
            foreach (var c in collNodes)
            {

                TmpCl cl = new TmpCl(c, _InstanceId, _configurationServer);

                var wis = cl.teamProjectCollection.GetService<WorkItemStore>();

                foreach (var p in cl.projCollectionInfo)
                {

                    if (p.Name == collectionName)
                    {

 string newnewquery= @"SELECT [System.Id], [Microsoft.VSTS.Common.ClosedDate],  [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] 

            FROM WorkItems 

            WHERE [System.TeamProject] = '" + p.Name + "' AND " +

       "   [System.WorkItemType] = 'Task' AND [System.ChangedDate] > '" + date + "' " +

        "    ORDER BY [System.Id]";


                        collNameTemp = p.Name;


                        Query qry1 = new Query(wis,newnewquery, null, false);
                        ICancelableAsyncResult car1 = qry1.BeginQuery();

                        WorkItemCollection items1 = qry1.EndQuery(car1);


                        return items1;

                    }
                    else { }
                }


            }

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        return null;       

public TmpCl(CatalogNode c,String InstanceId,TfsConfigurationServer configurationServer)
  {
      try
      {
          Guid collectionId = new Guid(c.Resource.Properties[InstanceId]);
          teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId);

          Iis = (ICommonStructureService)teamProjectCollection.GetService(typeof(ICommonStructureService));
          projCollectionInfo = Iis.ListAllProjects();


      }
      catch (Exception ex)
      {
          Console.WriteLine( ex.Message);
      }
  }

所以,我可以得到 Completed Work,例如:

    public String GetCompletedWorkByTaskWI(String collectionName, WorkItem taskWI)
    {
        try
        {
            foreach (Field f in taskWI.Fields)
            {
                if (f.Value != null && f.Name.Equals("Completed Work"))
                {

                    return Convert.ToString(f.Value);

                }
                else if (f.Value == null && f.Name.Equals("Completed Work"))
                {
                    return "0";
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        return "0";
    }

但是如何获得 Whats New 字段? 我找不到!

编辑:对不起,这是另一个 SQL 查询。此查询用于获取 WorkItem 对象。

PS - 字段:

DesiredCompliteDate
Area Name
Finish Date
Start Date
Completed Work
Original Estimate
Remaining Work
Activity
Integration Build
Stack Rank
Priority
Closed By
Closed Date
Activated By
Activated Date
State Change Date
Related Link Count
History
Description
Created By
Created Date
Work Item Type
Assigned To
Reason
Changed By
Rev
State
Title
Authorized As
Area ID
ID
Changed Date
Revised Date
Area Path
Node Name
Attached File Count
Hyperlink Count
Team Project
External Link Count
Iteration ID
Iteration Path

编辑:这是对包含最新值(tfs 查询生成器)的获取任务的查询:

SELECT [System.Id], [System.WorkItemType], [System.Title], 
       [System.AssignedTo],  [System.State]
    FROM WorkItems WHERE [System.TeamProject] = @project  
                     AND  [System.WorkItemType] &lt;&gt; ''  
                     AND  [System.State] &lt;&gt; ''  
                     AND  [WW.WhatsNew] CONTAINS '/' 
    ORDER BY [System.Id]

【问题讨论】:

  • 什么是新的定义。也许没有符合这个要求的字段
  • Whats new 是开发人员编写在此任务中添加的新功能的字段。
  • 没有名为“What's New”的字段。另外,仅供参考,您的异常处理很糟糕。摆脱 try/catch 块会对您有所帮助。
  • 为什么不好?我可以在方法上看到异常消息。关于什么是新的-我的 TFS 任务模板上有这个字段。可能是 castom 字段,但是如何获得它?
  • 您可以调试应用程序并查看taskWI.Fields 集合吗?也许该领域已经存在。此外,我无法将第一个代码块中查询中的选定字段与第二个块中的任务匹配,因为未选择Completed Work(可能默认返回)。您是否使用其他查询来检索任务?

标签: c# tfs tfs-workitem


【解决方案1】:

我建议将 What's new 字段添加到 SELECT 列表中:

SELECT [System.Id], [System.WorkItemType], [System.Title], 
       [System.AssignedTo], [System.State], [WW.WhatsNew] 
    FROM WorkItems WHERE [System.TeamProject] = @project  
                     AND  [System.WorkItemType] &lt;&gt; ''  
                     AND  [System.State] &lt;&gt; ''  
                     AND  [WW.WhatsNew] CONTAINS '/' 
    ORDER BY [System.Id]

返回的许多其他字段是 TFS 开箱即用的字段,因此我假设即使它们未明确包含在 SELECT 列表中,也会返回其中一些字段。

【讨论】:

  • 查询引用了一个不存在的字段。该错误是由«[WW.WhatsNew]
【解决方案2】:

我找到了这个字段。

答案是 - 从 WorkItem 获取修订版,获取修订版,然后继续:

if ((f.Name.Equals(Consts.WHATS_NEW) && f.Value != null))
                    this.WhatsNew = (String)f.Value;

【讨论】:

    猜你喜欢
    • 2017-03-14
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多