zoukankan      html  css  js  c++  java
  • 关于TFS中WorkItem的探究

    前几天,师父给了一个任务,寻找借口来获取从TFS中获取的工作项的历史记录。深感为难,明明知道应该怎么做,可是找了两天API也没有找到!最后为自己的愚蠢行为深深地折服了,忘记了一个最最重要的东西--断点。

    这就是获取到的WorkItem对象的数据结构,里面有什么一目了然了!

    这里的testItem是WorkItem的一个对象,其中, testItem = workItemStore.GetWorkItem(findID, dt.AddSeconds(-1));可以获得当前项目前一秒种之前的一个WorkItem版本信息。这样逐个向前递推就可以取到所有的历史版本。

    在testItem的属性中有一个叫做Fields,里面枚举了一个工作项的全部信息,从Fields[0]到Fields[50]一共51项。

    同样的道理也可以获取到每个历史记录中的链接和附件的状态。

    下面的代码分别是展现记录的内容和各个版本变化情况的逻辑,仅供参考:

     /// <summary>
    /// 显示历史数据
    /// </summary>
    /// <param name="testItem"></param>
    private static void DisplayFields(WorkItem testItem)
    {
        int FieldsLenth = testItem.Fields.Count;
        string writeValue = String.Empty;//字段内容
        for (int i = 0; i < FieldsLenth; i++)
        {
            if ((testItem.Fields[i].Value == null) || (testItem.Fields[i].Value.ToString() == ""))
            {
                writeValue = "null";
            }
            else
            {
                 writeValue = testItem.Fields[i].Value.ToString();
            }
            Console.WriteLine(testItem.Fields[i].Name + ":" + writeValue);
            }
    } 
    

      

     1         /// <summary>
     2         /// 显示变化信息
     3         /// </summary>
     4         private static void DisplayChange()
     5         {
     6             int Length = staticWorkItems.Length;
     7             int FieldsLenth = staticWorkItems[1].Fields.Count;
     8             for (int i = 0; i < (Length-1); i++)//控制workItem的版本变化
     9             {
    10                 for (int j = 0; j < FieldsLenth; j++)//控制检索内容向前
    11                 {
    12                     if (((staticWorkItems[i].Fields[j].Value == null) && (staticWorkItems[i + 1].Fields[j].Value != null)) && (staticWorkItems[i].Fields[j].Value == "") && (staticWorkItems[i + 1].Fields[j].Value != ""))
    13                     {
    14                         Console.WriteLine(staticWorkItems[i].Fields[j].Name + ":null" +
    15                                           "->" + staticWorkItems[i + 1].Fields[j].Value);
    16                     }
    17                     else if (((staticWorkItems[i].Fields[j].Value != null) && (staticWorkItems[i + 1].Fields[j].Value != null)) && (staticWorkItems[i].Fields[j].Value.ToString() != staticWorkItems[i + 1].Fields[j].Value.ToString()))
    18                     {//先判断取出来的值是否为空,避免空异常
    19                         Console.WriteLine(staticWorkItems[i].Fields[j].Name + "" + staticWorkItems[i].Fields[j].Value +
    20                                           "->" + staticWorkItems[i + 1].Fields[j].Value);
    21                     }
    22                     
    23                 }
    24                 DisplayAttachments(staticWorkItems[i]);
    25                 Console.WriteLine("");
    26             }
    27         }
  • 相关阅读:
    指针
    day07
    day06
    oracle instr
    动态解析dll及使用类
    客户端调用接口
    Java中调用WebService
    Vs2015智能提示英文
    oracle中varchar(32)转nvarchar(32)
    C#创建XML节点
  • 原文地址:https://www.cnblogs.com/ProgrammerHu/p/3921268.html
Copyright © 2011-2022 走看看