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

C# 获取项目集合的所有可用TFS字段,c#,tfs,command-prompt,tfs-sdk,tfs-process-template,C#,Tfs,Command Prompt,Tfs Sdk,Tfs Process Template,我需要TFS项目集合的所有字段,无需指定工作项。我已经在使用TFSAPI做一些其他的事情,但是我没有发现任何关于这个的东西 我发现使用的是witadmin.exe listfields命令,该命令提供了我想要的内容,但是如何在代码中将结果作为集合获得呢?我对命令不是很有经验,我只需要代码中的字段ID和名称,以便在WPF列表视图中显示它们。我是否需要在代码中调用cmd.exe,或者TFS API是否为此提供了扩展方法?我的“老师”说它应该有一个,因为它可以用witadmin.exe完成。witad

我需要TFS项目集合的所有字段,无需指定工作项。我已经在使用TFSAPI做一些其他的事情,但是我没有发现任何关于这个的东西


我发现使用的是witadmin.exe listfields命令,该命令提供了我想要的内容,但是如何在代码中将结果作为集合获得呢?我对命令不是很有经验,我只需要代码中的字段ID和名称,以便在WPF列表视图中显示它们。我是否需要在代码中调用cmd.exe,或者TFS API是否为此提供了扩展方法?我的“老师”说它应该有一个,因为它可以用witadmin.exe完成。

witadmin.exe是一个.NET可执行文件,所以你可以使用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;
    }
}
受保护的void InitFields()
{
if(this.fields==null)
{
FieldDefinitionCollection定义=新的FieldDefinitionCollection(this.Store,false);
列表=新列表(definitions.Count);
Dictionary Dictionary=新字典(definitions.Count,this.Store.ServerStringComparer);
for(int i=0;i
它将生成集合中所有可用字段的列表


this.Store
WorkItemStore

的一个实例,我明白了,我不认为您可以查看这样的可执行文件。FieldComparer到底是什么?我找不到那种类型的。我可以得到WorkItemStore,但不能得到FieldComparer。我不知道,当我尝试构建项目时,它找不到类型或命名空间FieldComparer。编译器将如何找到它?我需要一个使用参考吗?我能不能忽略字典和字段比较器并返回列表?我明白了,所以我真的不需要字段比较器,我想我可以用另一种方式对它进行排序。我会试试这个,我想我可以用这个方法,非常感谢,如果有任何问题,我会再次发表评论!