如何使用tfs Api查找应用于项目的流程模板

时间:2013-01-04 11:00:34

标签: tfs tfs2010

我已经看到可能有关于此的链接,但它们都没有正常工作。在所有情况下,templateid为-1或processtemplate为空。

  private ProjectProperty[] GetProcessTemplateDetailsForTheSelectedProject(string prjname)
    {
        var vcs = _tfs.GetService<VersionControlServer>();
        var ics = _tfs.GetService<ICommonStructureService>();
        ProjectProperty[] ProjectProperties = null;

        var p = vcs.GetTeamProject(prjname);
        string ProjectName = string.Empty;
        string ProjectState = String.Empty;
        int templateId = 0;
        ProjectProperties = null;

        ics.GetProjectProperties(p.ArtifactUri.AbsoluteUri, out ProjectName, out ProjectState, out templateId, out ProjectProperties);
        IProcessTemplates processTemplates = (IProcessTemplates)_tfs.GetService(typeof(IProcessTemplates));

        XmlNode node = processTemplates.GetTemplateNames();


        return ProjectProperties;
    }

请帮助解决这个问题。我想找到适用于项目的流程模板。

1 个答案:

答案 0 :(得分:0)

如果流程模板在上传到TFS之前获得了名称,则只能获取流程模板名称。

enter image description here

正如您在图像中看到的,这里有一个属性“Process Template”,它有一个值,即模板的名称。如果您查找不存在的属性,api将返回-1,这是您使用上述代码运行的内容。

此处博客链接中的代码将帮助您获取流程模板名称,同样,只有在您上传流程模板之前为流程模板指定了名称。 http://geekswithblogs.net/TarunArora/archive/2011/11/15/tfs-api-process-template-currently-applied-to-the-team-project.aspx

请注意,默认情况下,TFS 2012中的所有流程模板都已命名。对于TFS 2010来说情况并非如此。

希望这能回答你的问题。