Disclaimer: Rarely do I get a chance to totally geek out and write a post specifically about code. I enjoy the change-up. And hopefully some of you will benefit from this.
Ok. On a recent project, I’ve been playing around with the .NET APIs that were made available for interacting with TFS. You can tell that the documentation for these API’s are a little more raw than what is available for the .NET framework components, but that is not to say they aren’t still helpful.
As part of my project, I needed to programmatically download files to the local machine from version control. As part of my unit testing, I wanted to validate the source path before attempting the download. Basically, I wanted the equivalent of the System.IO.Directory.Exists() method in the .NET framework, but that validates against version control.
After several minutes of searching, I found the VersionControlServer.ServerItemExists() method. This handy method basically combines the functionality of the File.Exists() and Directory.Exists() methods, switching between the two (or combining) by setting the custom ItemType enumeration.
Using this method, I can first validate the path, as the following example shows:
Dim fakePath As String = "$/MyFakeTeamProject/RoadToNowhere" Dim vcServer As VersionControlServer = Nothing '...initialize a reference to the version control server here... 'Perform validation against server path before downloading. ' This example works for both file or directory paths. If Not vcServer.ServerItemExists(fakePath, ItemType.Any) Then Throw New Exception("Hey! The path you gave me is bunk!") End If
…and for the C# folks:
string fakePath = "$/MyFakeTeamProject/RoadToNowhere"; VersionControlServer vcServer = null; //...initialize a reference to the version control server here... // Perform validation against server path before downloading. // This example works for both file or directory paths. if (!vcServer.ServerItemExists(fakePath, ItemType.Any)) { throw new Exception("Hey! The path you gave me is bunk!"); }
Thanks for this. I looking for the same thing.