如何从TFS获得Whats New字段值

时间:2014-02-21 09:46:28

标签: c# tfs tfs-workitem

我无法通过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);
      }
  }

所以,我可以获得完成工作,例如:

    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

编辑:这是查询包含Whats New值(tfs查询生成器)的get tasks:

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]

2 个答案:

答案 0 :(得分: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列表中,也会返回一些字段。

答案 1 :(得分:0)

我找到了这个字段。

ansqwer是 - 从WorkItem获取修订版,获取修订版,然后转到:

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