当前位置: 首页 > 编程语言 > C#

如何通过API更改新创建的TFS工作项的工作流状态?分享

时间:2023-04-11 03:42:20 C#

如何通过API改变新创建的TFS工作项的工作流状态?我正在创建一个从“某物”到TFS2013的工作项迁移应用程序,我希望TFS工作项处于相应的工作流状态,就像它们在源系统中一样。例如,如果源工作项处于“已关闭”状态,我希望它在TFS中处于“完成”状态。我遵循了本文中的建议,该建议建议将WorkItemStore对象的BypassRules属性设置为true以便能够设置CreatedDate字段。这同样适用于更改工作流状态,我猜,因为它也需要绕过规则。因此,我尝试了以下操作://获取集合并对其进行身份验证varcollection=newTfsTeamProjectCollection(newUri(_tfsUrl),cred);集合.Authenticate();//获取工作项存储对象varstore=newWorkItemStore(collection,WorkItemStoreFlags.BypassRules);//创建工作项varworkItem=newWorkItem(store.Projects[_tfsProjectName].WorkItemTypes["ProductBacklogItem"]);//设置一些标准字段workItem.Title="somename";workItem.Description="一些描述";//验证工作项if(workItem.Validate().Count>0){//抛出违反验证规则}//保存工作项workItem.Save();如您所见,此示例未违反任何验证规则,并且workItem.Validate().Count返回0。但是对workItem.Save()的调用引发以下异常:附加信息:TF26212:TeamFoundationServer无法保存您的更改。工作项类型定义可能有问题。请重试或联系您的TeamFoundationServer管理员。在调用Save()方法之前,我检查了BypassRules是否设置为true。此外,workItem.IsValid为真。有趣的是,如果我改变从varstore=newWorkItemStore(collection,WorkItemStoreFlags.BypassRules);获取WorkItemStore对象的方式。到varstore=collection.GetService();它保存没有任何问题!但在这种情况下,我不知道如何将BypassRules设置为true。创建WorkItemStore对象时,此属性是只读的,如果我尝试将工作流步骤设置为“新建”以外的其他内容,则会收到验证错误。所以,我的基本问题是:如何通过API在TFS中创建工作项并能够更改这个新创建的项目中的State字段?伙计们,正如经常发生的那样,答案是手动的。让我解释。我在问题中引用的文章明确指出:您需要成为项目收集服务帐户的成员但它没有提到您不能轻松地将用户或组添加到项目收集服务帐户。如果您尝试通过Web访问来执行此操作,您将失败-只需禁用“添加”按钮即可。此外,屏幕截图具有误导性,将帐户显示为ProjectCollectionAdministrators组。默认情况下,ProjectCollectionServiceAccounts组包含一个名为TeamFoundationServiceAccounts的帐户。这是您应该将帐户添加到的组。这可以借助名为TFSSecurity.exe的控制台应用程序来完成:TFSSecurity.exe/g+"TeamFoundationServiceAccounts""Domainmy-service-account"/server:http://mytfsserver:8080/tfs本文将要对此进行详细说明,该文章以正确的解决方案正确地描述了情况。TFSSecurity.exe可以在以下位置找到:%ProgramFiles(x86)%MicrosoftVisualStudioCommon7IDE(egC:\ProgramFiles(x86)\MicrosoftVisualStudio12.0Common7IDE)以上是C#学习教程:Howto通过API更改新创建的TFS工作项的工作流状态?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: