10

我一直在谷歌上搜索如何使用 C# 使用 TFS API 移动文件。这个想法是有一个文件夹,开发人员在其中放置数据库升级脚本,构建过程进入该文件夹会创建一个构建脚本,并将文件夹中的所有文件移动到具有我们刚刚创建的数据库构建版本的新文件夹。

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

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

4

2 回答 2

11

它非常简单:)。

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

那么你当然需要CheckIn。使用“workspace.GetPendingChanges()”和“workspace.CheckIn()”方法来完成。

于 2008-09-29T15:04:27.830 回答
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; 
        }
    }
}
于 2008-09-29T15:12:10.463 回答