2008-09-29 6 views
9

J'ai été googling pour un bon moment sur la façon de déplacer un fichier avec C# en utilisant l'API TFS. L'idée est d'avoir un dossier sur lequel les développeurs déposent les scripts de mise à niveau de base de données et le processus de construction va créer un script de construction et déplace tous les fichiers du dossier vers un nouveau dossier avec la version de base de données que nous venons de créer.Comment déplacer un fichier TFS avec C# API?

Je ne peux pas trouver sérieusement une référence sur le déplacement des fichiers programatically dans TFS ... (côté de la ligne de commande cmd)

Quelqu'un sait-il d'un bon guide/msdn point de départ pour l'apprentissage TFS fichiers de contrôle source manipulation via C#?

Répondre

10

C'est assez simple :).

Microsoft.TeamFoundation.VersionControl.Client.Workspace workspace = GetMyTfsWorkspace(); 
workspace.PendRename(oldPath, newPath); 

Ensuite, vous avez besoin de CheckIn, bien sûr. Utilisez les méthodes "workspace.GetPendingChanges()" et "workspace.CheckIn()" pour le faire.

7

Voici un exemple de code rapide et corrompu qui devrait vous permettre d'y parvenir en grande partie.

using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.VersionControl.Client; 


public void MoveFile(string tfsServer, string oldPath, string newPath) 
{ 
    TeamFoundationServer server = TeamFoundationServerFactory.GetServer(tfsServer, new UICredentialsProvider()); 
    server.EnsureAuthenticated(); 
    VersionControlServer vcserver = server.GetService(typeof(VersionControlServer); 
    string currentUserName = server.AuthenticatedUserName; 
    string currentComputerName = Environment.MachineName; 
    Workspace[] wss = vcserver.QueryWorkspaces(null, currentUserName, currentComputerName); 
    foreach (Workspace ws in wss) 
    { 

     foreach (WorkingFolder wf in wfs) 
     { 
      bool bFound = false; 
      if (wf.LocalItem != null) 
      { 
       if (oldPath.StartsWith(wf.LocalItem)) 
       { 
        bFound = true; 
        ws.PendRename(oldPath, newPath); 
        break; 
       } 
      } 
      if (bFound) 
       break; 
     } 
    } 
} 
Questions connexes