如何以编程方式关闭TFS工作项

Sco*_*ott 2 .net vb.net tfs

我正在尝试将存储在Excel工作表中的旧问题跟踪系统中的项目导入Team Foundation Server.我成功遍历Excel文件的行,我可以创建新的工作项,但它们始终处于Proposed状态.如果我尝试将状态更改为Closed,然后为工作项调用Validate方法,则会在State属性上收到验证错误 - InvalidListValue {4}.

    Dim MyProj As Project = store.Projects("MyProject")
    Dim WIT As WorkItemType = MyProj.WorkItemTypes("Task")
    Dim WorkItem As WorkItem = WIT.NewWorkItem()

    WorkItem.Title = Title
    WorkItem.Description = Description
    WorkItem.History = History
    WorkItem.State = "Closed"
    WorkItem.Fields("Assigned To").Value = AssignedTo
    WorkItem.Fields("Priority").Value = Priority
    WorkItem.Fields("Closed By").Value = ClosedBy
Run Code Online (Sandbox Code Playgroud)

我还尝试了下面的代码,尝试保存工作项,将状态更改为关闭,然后再次保存,但这似乎也不起作用 - 当我在"我的工作"下打开状态时仍然建议状态项目TFS查询:

        WorkItem.Save()

        WorkItem.State = "Closed"
        WorkItem.Fields("Closed By").Value = ClosedBy
        WorkItem.Save()
Run Code Online (Sandbox Code Playgroud)

有没有其他人尝试过这样的事情并且成功了,或者有想法做到这一点?哦,这是我正在尝试创建和关闭的CMMI任务.我想知道我是否想要跳过CMMI要求的某些活动,但我是新手,这只是猜测.

Sco*_*ott 5

我想出了如何以编程方式创建和关闭TFS CMMI任务.关键是要通过CMMI流程,可以在http://msdn.microsoft.com/en-us/library/bb668962.aspx上找到,更改State属性并在每次更改后保存WorkItem.

        ... WorkItem creation tasks
        WorkItem.Fields("Assigned To").Value = AssignedTo
        WorkItem.Fields("Priority").Value = Priority

        'This first Save creates a WorkItem in the Proposed state'
        WorkItem.Save()

        WorkItem.State = "Active"
        Errors = WorkItem.Validate()
        WorkItem.Save()

        WorkItem.State = "Resolved"
        WorkItem.Fields("Resolved By").Value = ClosedBy
        WorkItem.Fields("Resolved Reason").Value = "Just because"
        Errors = WorkItem.Validate()
        WorkItem.Save()

        WorkItem.State = "Closed"
        WorkItem.Fields("Closed By").Value = ClosedBy
        Errors = WorkItem.Validate()
        WorkItem.Save()
Run Code Online (Sandbox Code Playgroud)