使用C#从TFS访问Query,但无法从Query访问某些字段

时间:2015-01-19 03:54:59

标签: c# tfs

我将来自TFS的查询引入我在C#中编写的应用程序。一切正常,但我无法访问查询中的某些字段。他们不会出现。我想也许他们很可能是我们项目中添加的自定义字段。例如:构建版本号...在TFS查询中,该字段称为ObjectVersion。但我不能使用它,它在我的代码中不存在。

这就是我所拥有的。 TFSCheckIter()方法只是将迭代路径转换为我的C#程序识别的东西," TFSitemIteration"。注释掉的行是我无法访问的字段。

Uri collectionUri = new Uri("http://Server/tfs/DefaultCollection/");

NetworkCredential credential = new NetworkCredential("UserName", "Password");
TfsTeamProjectCollection teamProjectCollection = new TfsTeamProjectCollection(collectionUri, credential);
teamProjectCollection.EnsureAuthenticated();

WorkItemStore workItemStore = teamProjectCollection.GetService<WorkItemStore>();

var togProject = workItemStore.Projects.OfType<Project>().FirstOrDefault(project => project.Name == "ProjectName");
if (togProject != null)
{
    var CMRAQuery = togProject.StoredQueries.OfType<StoredQuery>().FirstOrDefault(query => query.Name == "TFSBuildTasks");
    if (CMRAQuery != null)
    {
        WorkItemCollection WrkItmLst = workItemStore.Query(CMRAQuery.QueryText.Replace("@project", "\"ProjectName\"").Replace("@me", "\"Name\""));

        foreach (WorkItem TFSitem in WrkItmLst)
        {
            TFSitemName = TFSitem.Title;
            //TFSitemVersion = TFSitem.ObjectVersion; 
            //TFSitemType = TFSitem.ObjectType;
            TFSitemState = TFSitem.State;
            TFSitemIterPath = TFSitem.IterationPath;
            //TFSitemconfig = TFSitem.IncludeConfig;
            //TFSitemLB = TFSitem.LoadBalancer;
            //TFSitemFW = TFSitem.Framework;

            TFSCheckIter();

            if (TFSitemState == "D-Promote" | TFSitemState == "I-Promote")
            {
                 label5.Text = TFSitemName;
                 label6.Text = TFSitemState;
                 label7.Text = TFSitemIteration;
                 label8.Text = TFSitemVersion;
            }
    }

     }
}

1 个答案:

答案 0 :(得分:0)

使用Fields属性TFSitemVersion = TFSitem.Fields['ObjectVersion'].Value。我建议使用参考名称,例如YourCompany.ObjectVersion