我将来自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;
}
}
}
}
答案 0 :(得分:0)
使用Fields属性TFSitemVersion = TFSitem.Fields['ObjectVersion'].Value
。我建议使用参考名称,例如YourCompany.ObjectVersion
。