Search code examples
c#tfstfs-sdk

C# TFS SDK Get Items from changeset


I want to get the Content from an item from a specific Changeset. With my code, I get the correct number of items, but every property of the item is empty, only the correct URL is filled up. All other properties are set to null. How can I solve this?

string collectionUri = @"https://tfs.myServer.de/MyProject";
using (TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(collectionUri)))
{
   TfvcHttpClient tfvcClient = tpc.GetClient<TfvcHttpClient>();
   var changedItems = tfvcClient.GetChangesetAsync(125453).Result;
   IEnumerable<TfvcChange> changesetChanges=tfvcClient.GetChangesetChangesAsync(changedItems.ChangesetId).Result;
   foreach (var itemsChange in changesetChanges)
   {
      Console.WriteLine(itemsChange.NewContent.Content);
   }
}

Solution

  • This gets you the contents of the items of a changeset

    private static async Task ReadContent(TfvcHttpClient tfvcClient)
    {
        var changesetId = 123456;
        var changesetChanges = await tfvcClient.GetChangesetChangesAsync(changesetId);
        var tfvcVersionDescriptor = new TfvcVersionDescriptor(null, TfvcVersionType.Changeset, changesetId.ToString());
    
        foreach (var changesetChange in changesetChanges)
        {
            var path = changesetChange.Item.Path;
            Stream contentStream = await tfvcClient.GetItemContentAsync(path, versionDescriptor: tfvcVersionDescriptor);
            using (StreamReader streamReader = new StreamReader(contentStream))
            {
                var content = streamReader.ReadToEnd();
            }
        }
    }