2008-09-29 12 views
9

Я хорошо разбираюсь в том, как переместить файл с помощью C# с помощью TFS API. Идея состоит в том, чтобы иметь папку, в которой разработчики сбрасывают сценарии обновления базы данных, а процесс сборки получает в папку, создает скрипт сборки и перемещает все файлы в папке в новую папку с только что созданной версией базы данных.Как переместить файл TFS с помощью API C#?

Я не могу серьезно найти справку о перемещении файлов в TFS программно ... (в сторону ЦМД командной строки)

ли кто-нибудь знает хорошего гида/MSDN отправной точкой для изучения TFS файлов управления источником манипуляции с помощью C#?

ответ

10

Его довольно просто :).

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

Тогда вам необходимо проверить его, конечно. Используйте методы «workspace.GetPendingChanges()» и «workspace.CheckIn()» для этого.

7

Вот быстрый и грязный образец кода, который должен получить от вас большую часть пути.

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