TFS is great, but it simply doesn’t do everything I need it to do. My team has a TFS work-item-driven software development life-cycle that depends on having stories organized with tasks of certain activity types performed in a specific order. It’s a difficult process for new team members to internalize, and it requires discipline for even our veteran team members. One of the things that I’ve decided to do to help my team manage this process successfully is to create a custom tool with built in “queues” that will display their work items as they need attention without relying on the developer to manually run different queries and discover items on their own.
And so that brings us to the TFS SDK. I’m going write a series of short posts detailing how to do some simple tasks that can be combined to do very powerful things. One of the simplest and most powerful things you can do with the TFS SDK is run WIQL queries to query work items using a SQL-like syntax.
The first step you need to do is simply to add the TFS SDK references to your project. These are the three I added to my project:
Microsoft.TeamFoundation.Client Microsoft.TeamFoundation.Common Microsoft.TeamFoundation.WorkItemTracking.Client
Once you’ve got that, you can build an execute a query with the following block of code:
var tpc = new TfsTeamProjectCollection(new Uri("http://YourTfsServer:8080/tfs/YourCollection")); var workItemStore = tpc.GetService(); var queryResults = workItemStore.Query(@" SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] FROM WorkItems WHERE [System.AssignedTo] = @me ORDER BY [System.Id] "); foreach (WorkItem wi in queryResults) { Console.WriteLine("{0} | {1}", wi.Fields["State"].Value, wi.Fields["Title"].Value); }
Bonus tip: you can construct your WIQL query by building it from Visual Studio’s Team Explorer and saving it to file. For my application, I’m storing the WIQL query in my app.config to allow for quick & easy customization.
TFS SDK to create new project ?