2008-09-29 8 views
9

He estado buscando un buen momento sobre cómo mover un archivo con C# utilizando la API TFS. La idea es tener una carpeta en la que los desarrolladores suelten scripts de actualización de base de datos y el proceso de compilación get to the folder cree un script de compilación y mueva todos los archivos de la carpeta a una nueva carpeta con la versión de compilación de base de datos que acabamos de crear.¿Cómo muevo un archivo TFS con la API C#?

no puedo encontrar ninguna referencia en serio sobre cómo mover archivos mediante programación en TFS ... (a un lado de la línea de comando cmd)

¿Alguien sabe de un/punto de partida de MSDN buena guía para el aprendizaje de TFS manipulación de archivos de control de fuente a través do#?

Respuesta

10

Es bastante simple :).

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

Entonces usted necesita CheckIn it, por supuesto. Use los métodos "workspace.GetPendingChanges()" y "workspace.CheckIn()" para hacerlo.

7

Aquí hay una muestra de código rápido y sucio que debería llevarlo la mayor parte del camino hasta allí.

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; 
     } 
    } 
} 
Cuestiones relacionadas