Share via


Comment créer un Team Project par code dans Team Foundation Server 2010

Bonjour,

Que de temps passé depuis mon dernier post ici ! Beaucoup de travail et pas beaucoup de temps à consacrer pour partager mes expériences… Malheureusement !

Aujourd’hui je souhaite partager un exemple simple de code permettant de créer un projet d’équipe (“Team Project”) en C# sur un Team Foundation Server 2010.

La première étape est de télécharger les “Team Foundation Server Power Tools” disponibles depuis la page des Visual Studio Power Tools ou directement ici.

L’outil que nous allons utiliser dans notre code est tfpt.exe, notamment avec le paramètre CreateTeamProject.

Pour tout connaitre sur les paramètres à passer à cette commande, et modifier le code ci-dessous selon vos besoins, je vous recommande de regarder l’aide. Dans une fenêtre de commande, tapez :
tfpt.exe CreateTeamProject /?

Vous voilà parés pour modifier le code ci-dessous à votre guise.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Globalization;
using System.Threading;

namespace TeamProjectCreator
{
class Program
{
static string tfsPowerToolsFolder = @"C:\Program Files (x86)\Microsoft Team Foundation Server 2010 Power Tools\";
static string serverName = "nomServeurTFS";
static string projectName = "aurelienTestProject";
static string processTemplateName = "MSF for Agile Software Development v5.0";
static string collectionName = "https://nomServeurTFS:8080/tfs/DefaultCollection";

static void Main(string[] args)
{
Process tfsProcess = new Process();
tfsProcess.StartInfo.FileName = Path.Combine(tfsPowerToolsFolder, "tfpt.exe");
tfsProcess.StartInfo.Arguments =
string.Format(CultureInfo.InvariantCulture,
"CreateTeamProject /verbose /server:{0} /teamproject:{1} /collection:{3} /sourcecontrol:None /noportal /processtemplate:\"{2}\"",
serverName, projectName, processTemplateName, collectionName);

tfsProcess.StartInfo.UseShellExecute = false;
tfsProcess.StartInfo.RedirectStandardOutput = true;
tfsProcess.StartInfo.RedirectStandardError = true;

tfsProcess.Start();
tfsProcess.OutputDataReceived += OutputHandler;
tfsProcess.BeginOutputReadLine();

tfsProcess.WaitForExit();

// Il y a parfois un petit souci de synchro quand le processus envoie le message de sortie
// et le texte final envoyé sur la sortie standard.
            // Attente de 2 secondes pour s'assurer que l'on a le dernier message
Thread.Sleep(TimeSpan.FromSeconds(2).Milliseconds);

tfsProcess.Close();
}

// Cette méthode permet d'afficher dans la fenêtre Output de Visual Studio
        // l'ensemble des messages affichés par tfpt.exe
public static void OutputHandler(object sender, DataReceivedEventArgs e)
{
if (String.IsNullOrEmpty(e.Data))
return;
else
Debug.Print(e.Data);
}
}
}

Bonne création de projets !

A bientôt,
Aurélien

Comments

  • Anonymous
    January 26, 2011
    Bonsoir,c'est un bon exemple de call à un EXE externe mais pourquoi développer en .NET (compilé) plutôt que d'appeler directement tfpt.exe avec les bons paramètres depuis une invite de commandes DOS ? ou un fichier CMD ?N'oubliez pas que:TFS 2010 expose des web services de gestion (malheureusement peu documentés)Microsoft met à disposition un SDK pour TFS 2010 David