Click here to Skip to main content
15,943,477 members
Articles / Programming Languages / C#

TFS Masala - How to get TFS pending check-in statistics through a .NET web service

Rate me:
Please Sign up or sign in to vote.
2.23/5 (4 votes)
12 Nov 2008CPOL1 min read 22.5K   7   1
How to get TFS pending check-in statistics through a .NET web service.


This article outlines how to query a TFS object model from a .NET web service method.


I have been developing a team dashboard in Silverlight which queries different sources and provides useful information to specific domain users. I would like to share my experience of dealing with the TFS object model for getting the checked out file information from the system, from a web service's perspective.

Using the code


  1. Make sure your web service project has references to:
    1. Microsoft.TeamFoundation.Client.dll
    2. Microsoft.TeamFoundation.VersionControl.Client.dll
  2. Make sure the destination box on which you are deploying the web service has the TFS client installed on it.

How to use the TFS Object Model

You would need to instantiate a TeamFoundationServer object from the Microsoft.TeamFoundation.Client namespace. You need to have a TFS user with read-only (ideally) rights on all the projects for the next step. Remember, the web service won't use the currently logged on Windows credentials to log on to the TFS server. We would need to impersonate as this TFS user with read-only access rights. Now, where to store the login credentials is a discussion for another day. I have got it hard-coded in the method for simplicity:

System.Net.NetworkCredential nc = 
  new System.Net.NetworkCredential("tfs login name",
  "tfs login password");

TeamFoundationServer tfs = new TeamFoundationServer("TFS server name", nc);

Now, we need to get the VersionControlServer service from the TeamFoundation server instance:

VersionControlServer vcs = 

Now, query the VersionControlServer instance to get a PendingSet collection:

PendingSet[] sets = vcs.GetPendingSets(
                    new String[] { 
                        "$/Project4" }

assuming we want the details for the four projects - Project1, Project2, Project3, PIroject4.

I have left out the details of how you would transform this data before returning it to the caller over the wire.

Points of interest

None so far.


First release, so awaiting feedback.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Written By
Team Leader Sage UK Limited
United Kingdom United Kingdom
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

GeneralVery good Pin
juliotrujilloleon27-Nov-08 5:20
juliotrujilloleon27-Nov-08 5:20 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.