How do you get the latest version of source code using the Team Foundation Server SDK?

c#, tfs, tfs-sdk

Solution

I ended up using a different approach that seems to work, mainly taking advantage of the `Item.DownloadFile()` method:

VersionControlServer sourceControl; // actually instantiated...

ItemSet items = sourceControl.GetItems(sourcePath, VersionSpec.Latest, RecursionType.Full);

foreach (Item item in items.Items)
{
    // build relative path
    string relativePath = BuildRelativePath(sourcePath, item.ServerItem);

    switch (item.ItemType)
    {
    case ItemType.Any:
        throw new ArgumentOutOfRangeException("ItemType returned was Any; expected File or Folder.");
    case ItemType.File:
        item.DownloadFile(Path.Combine(targetPath, relativePath));
        break;
    case ItemType.Folder:
        Directory.CreateDirectory(Path.Combine(targetPath, relativePath));
        break;
    }
}

Problem

I'm attempting to pull the latest version of source code out of TFS programmatically using the SDK, and what I've done somehow does not work: ``` string workspaceName = "MyWorkspace"; string projectPath = "/TestApp"; string workingDirectory = "C:\Projects\Test\TestApp"; VersionControlServer sourceControl; // actually instantiated before this method... Workspace[] workspaces = sourceControl.QueryWorkspaces(workspaceName, sourceControl.AuthenticatedUser, Workstation.Current.Name); if (workspaces.Length > 0) { sourceControl.DeleteWorkspace(workspaceName, sourceControl.AuthenticatedUser); } Workspace workspace = sourceControl.CreateWorkspace(workspaceName, sourceControl.AuthenticatedUser, "Temporary Workspace"); try { workspace.Map(projectPath, workingDirectory); GetRequest request = new GetRequest(new ItemSpec(projectPath, RecursionType.Full), VersionSpec.Latest); GetStatus status = workspace.Get(request, GetOptions.GetAll | GetOptions.Overwrite); // this line doesn't do anything - no failures or errors } finally { if (workspace != null) { workspace.Delete(); } } ``` The approach is basically creating a temporary workspace, using the `Get()` method to grab all the items for this project, and then removing the workspace. Is this the correct way to do this? Any examples would be helpful.

Original source