Introduction
This article outlines how to query a TFS object model from a .NET web service method.
Background
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
Prerequisites
- Make sure your web service project has references to:
- Microsoft.TeamFoundation.Client.dll
- Microsoft.TeamFoundation.VersionControl.Client.dll
- 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 =
(VersionControlServer)tfs.GetService(typeof(VersionControlServer));
Now, query the VersionControlServer
instance to get a PendingSet
collection:
PendingSet[] sets = vcs.GetPendingSets(
new String[] {
"$/Project1",
"$/Project2",
"$/Project3",
"$/Project4" }
RecursionType.Full);
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.
History
First release, so awaiting feedback.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.