如何使用c#API移动TFS文件?

时间:2020-03-06 14:52:35  来源:igfitidea点击:

我一直在搜寻有关如何使用TFS API移动文件的好时光。想法是要有一个文件夹,开发人员可以在该文件夹上放下数据库升级脚本,然后将构建过程移至该文件夹,以创建一个构建脚本,并将该文件夹上的所有文件移动到具有我们刚刚创建的数据库构建版本的新文件夹。

我找不到关于在TFS中以编程方式移动文件的任何参考...(除了cmd命令行之外)

有人知道通过C#学习TFS源代码控制文件操作的良好指南/ msdn起点吗?

解决方案

它非常简单:)。

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

然后,我们当然需要CheckIn。使用" workspace.GetPendingChanges()"和" workspace.CheckIn()"方法进行操作。

这是一个快速而又肮脏的代码示例,它应该可以实现大部分目标。

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