获取项目集合的所有可用 TFS 字段

Get all available TFS Fields for a Project Collection

我需要 TFS 项目集合的所有 字段 而不指定工作项。我已经在使用 TFS API 做一些其他事情,但我还没有找到任何关于这个的东西。

我发现的是使用 witadmin.exe listfields 命令,这正是我想要的,但我如何获得结果 我的代码中的集合?我对命令不是很有经验,我只需要代码中的 字段 ID 和名称 ,以便我可以在 WPF 列表视图中显示它们。我需要在我的代码中调用 cmd.exe 还是 TFS API 有一个 扩展方法 ?我的 "teacher" 说它应该有一个,因为它可以用 witadmin.exe.

来完成

witadmin.exe 是一个.NET Executable,所以你可以在上面使用Reflector、dotPeek 或ilSpy 看看微软是如何实现它的。这似乎是您要查找的代码段:

protected void InitFields()
{
    if (this.fields == null)
    {
        FieldDefinitionCollection definitions = new FieldDefinitionCollection(this.Store, false);
        List<FieldDefinition> list = new List<FieldDefinition>(definitions.Count);
        Dictionary<string, FieldDefinition> dictionary = new Dictionary<string, FieldDefinition>(definitions.Count, this.Store.ServerStringComparer);
        for (int i = 0; i < definitions.Count; i++)
        {
            FieldDefinition item = definitions[i];
            if (!item.IsInternal)
            {
                list.Add(item);
                dictionary[item.ReferenceName] = item;
                dictionary[item.Name] = item;
            }
        }
        list.Sort(new FieldComparer(this.Store.ServerStringComparer));
        this.fields = list;
        this.fieldsMap = dictionary;
    }
}

它将生成集合中所有可用字段的列表。

this.StoreWorkItemStore.

的实例