我正在为 TFS 错误跟踪系统实现一个 Web 界面,以便客户可以登录并输入错误。在这里,我想根据创建的 VSTS 团队项目的模板类型添加字段。例如,使用“敏捷”模板创建的团队项目具有与其他模板不同的字段集。因此,我想在一开始就确定团队项目的流程模板。
但是“Microsoft.TeamFoundation.WorkItemTracking.Client.Project”不包含模板类型的字段。那么如何识别团队项目的流程模板类型呢?
我正在为 TFS 错误跟踪系统实现一个 Web 界面,以便客户可以登录并输入错误。在这里,我想根据创建的 VSTS 团队项目的模板类型添加字段。例如,使用“敏捷”模板创建的团队项目具有与其他模板不同的字段集。因此,我想在一开始就确定团队项目的流程模板。
但是“Microsoft.TeamFoundation.WorkItemTracking.Client.Project”不包含模板类型的字段。那么如何识别团队项目的流程模板类型呢?
直接的答案是调用GetProjectProperties。
但是,我同意约翰的观点,您可能正在处理一个比必要的更难的问题。当然,您会同意编写一个完全通用的 WIT 客户端很难。但是,工作项定制非常普遍,即使在使用标准流程模板的组织中也是如此。所以你可能无法摆脱一次性解决方案,除非你愿意在项目管理员每次更新他们的错误模板时更新它。
WIWA不适合你有什么原因吗?(请注意,下载链接不再有效;它现在是更广泛的 TSWA SP1 版本的一部分。)
还要记住,任何可供客户(不是内部员工)使用的此类应用程序,无论是 WIWA 还是您自己编写的东西,都需要根据 TFS CAL 模型的“外部连接器许可证”。
代替:
Console.WriteLine(templateId);
利用:
Console.WriteLine(projectProperties[2].Value);
我不知道你的问题的答案,但有几点要说明:
最后,您应该考虑可以自定义流程模板。除非您需要有关模板本身的信息,否则您可能希望围绕字段集而不是模板来组织。
我实际上使用了以下代码:
static void GetProjectTemplate()
{
string collectionName = "http://<our_host_name>:8080/tfs/defaultcollection/";
TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(collectionName)
, new UICredentialsProvider());
tfs.EnsureAuthenticated();
ICommonStructureService css = (ICommonStructureService)tfs.GetService(typeof(ICommonStructureService));
string[] projects = { "proj1", "proj2", "proj3" };
foreach (string proj in projects)
{
ProjectInfo projectInfo = css.GetProjectFromName(proj);
String projectName;
String prjState;
int templateId = 0;
ProjectProperty[] projectProperties;
css.GetProjectProperties(
projectInfo.Uri, out projectName, out prjState, out templateId, out projectProperties);
Console.WriteLine(templateId);
}
// Locate templateId in the list of Process templates
IProcessTemplates processTemplates = (IProcessTemplates)tfs.GetService(typeof(IProcessTemplates));
XmlNode node = processTemplates.GetTemplateNames();
Console.WriteLine(Regex.Replace( node.InnerXml,"<[A-Za-z]","\n$&", RegexOptions.ECMAScript ) );
}
...从这里复制和修改: http ://www.databaseforum.info/30/1083827.aspx
问题是,我仍然得到“-1”作为模板 ID。这是否意味着项目是在没有模板的情况下创建的?另外,我更改了上面的项目和主机名,以便在此处发布。(它们是合法的项目)。