simple command-line example: listing the team projects on a server

This is a very simple example showing a simple use of the ICommonStructureService.

 

Running against my current test server shows some of the test projects I made yesterday while testing a bug fix:

 

 

% ListTeamProjects.exe jmanning-test

empty-folder
vstfs:///Classification/TeamProject/313a9cf6-a2b9-4f03-9fd4-73fbc22aaf80
[WellFormed]

no-folder
vstfs:///Classification/TeamProject/f76c2d64-6029-4292-8b99-91ba8fbb5ba9
[Deleting]

branch-of
vstfs:///Classification/TeamProject/b29bb5a2-f921-4f10-a281-b845192427c3
[WellFormed]

using System;

using Microsoft.TeamFoundation.Client;

using Microsoft.TeamFoundation.Server;

namespace ListTeamProjects

{

    class Program

    {

        static void Main(string[] args)

        {

            if (args.Length == 0)

            {

            Console.Error.Write("Usage: ListTeamProjects <servername>");

                Environment.Exit(1);

            }

            TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(args[0]);

            ICommonStructureService css = (ICommonStructureService)tfs.GetService(typeof(ICommonStructureService));

            foreach (ProjectInfo projectInfo in css.ListAllProjects())

            {

                Console.WriteLine("{0,-30} {1} [{2}]",

                                 
projectInfo.Name,

                                 
projectInfo.Uri,

                                 
projectInfo.Status);

            }

        }

    }

}

 

[Edit 2005-10-20]
Thanks to Tom Fieldhouse at Intel for asking - the references needed
for this to build include System, Microsoft.TeamFoundation.dll,
Microsoft.TeamFoundation.Common.dll, and
Microsoft.TeamFoundation.Client.dll

  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="Microsoft.TeamFoundation">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.TeamFoundation.Common">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.TeamFoundation.Client">
      <Private>False</Private>
    </Reference>
  </ItemGroup>

 

The natural
question is "why don't your assembly names match the namespaces (or
vice versa)?" - unfortunately, there's various non-interesting reasons
for that, and we're hoping to make it better in V2.

 

[Edit 2005-10-21]
While the above code is using ListAllProjects to get all the team
projects on the server (even those not in the WellFormed state), CSS
also has a different method ListProjects() that
returns the exact same list, except it's filtered to only show the
WellFormed projects.  This is very useful when you don't want to
have to worry about your call potentially catching a team project while
it's in the middle of being created/deleted/whatever, or projects that
were only partially created :)

ListTeamProjects.zip