2015-10-15 104 views
0

我试图自动创建和管理TFS项目。我有以下代码来创建一个TFS项目:创建TFS项目

try 
{ 
    Uri collectionUri = new Uri("http://TFSServer:8080"); 
    TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(collectionUri); 

    WorkItemStore workItemStore = tpc.GetService<WorkItemStore>(); 
    Project teamProject = workItemStore.Projects["ProjectName"]; 
    WorkItemType workItemType = teamProject.WorkItemTypes["ProjectNameTask"]; 

    WorkItem userStory = new WorkItem(workItemType) 
    { 
     Title = "Recently ordered menu 2", 
     Description = "As a return customer, I want to see items that I've recently ordered", 
     State = "Proposed" 

    }; 

    var invalidFields = userStory.Validate(); 

    userStory.Save(); 
} 
catch (Exception exception) 
{ 
    Console.WriteLine("Exception occurred: " + exception.ToString()); 
    throw; 
} 

调用userStory.Validate()在invalidFields将返回一个项目,详情:

Name: Issue Type 
ReferenceName: IssueType 

但是,工作项目不具备的元素键入IssueType。所以下面的代码给出了编译错误:

WorkItem userStory = new WorkItem(workItemType) 
{ 
    Title = "Recently ordered menu 2", 
    Description = "As a return customer, I want to see items that I've recently ordered", 
    State = "Active", 
    IssueType = "Some Issue" 

}; 

错误提示“Can not resolve symbol'IssueType'”。这可能是因为我没有访问特定TeamProject的正确dll。我认为解决以下两个想法中的一个可能会有所帮助:

如何为特定的TeamProject的WorkItem获取正确的dll?

是否可以将字段添加到对象类型?我试图通过扩展WorkItem来创建一个新类,但它是名为Microsoft.TeamFoundation.WorkItemTracking.Client的密封类。

想知道如何解决这个问题。

+0

您可以检查无效字段的状态是什么? - 例如'invalidFields [0] .Status'? – Michael

+0

您应该使用有效的“工作项类型”而不是“ProjectNameTask” –

+0

@Michael invalidFields [0] .Status显示InvalidEmpty。 – Romonov

回答

0

工作项目可以具有远远超出WorkItem类型中表示的任意字段。查看Fields属性,查看您所在的字段。

例如,userStory.Fields["IssueType"].Value = "Value"

+0

获取编译错误: 索引器'Microsoft.TeamFoundation.WorkItemTracking.Client.FieldCollection.this'没有setter。 – Romonov

+0

我的错误 - 我用更正的代码更新了我的答案。 –

+0

这工作!谢谢! – Romonov