C# Team Foundation服务器API移动文件

C# Team Foundation服务器API移动文件,c#,visual-studio-2010,tfs,C#,Visual Studio 2010,Tfs,我想将tfs文件从服务器上的一个位置移动到另一个位置 这一进程将是: 给定服务器和项目名称-递归项目文件夹的子文件夹,并将文件复制到其他文件夹位置 我看了很多不同的例子,一些使用tfs收集对象,一些工作空间等。作为tfs api的新手,我有点困惑 有人可以提供一些代码样本吗(我使用的是VS2010) 到目前为止,我掌握的代码是: NetworkCredential tfsCredential = new NetworkCredential("username", "password"); tfs

我想将tfs文件从服务器上的一个位置移动到另一个位置

这一进程将是:

给定服务器和项目名称-递归项目文件夹的子文件夹,并将文件复制到其他文件夹位置

我看了很多不同的例子,一些使用tfs收集对象,一些工作空间等。作为tfs api的新手,我有点困惑

有人可以提供一些代码样本吗(我使用的是VS2010)

到目前为止,我掌握的代码是:

NetworkCredential tfsCredential = new NetworkCredential("username", "password");
tfsCredential.Domain = "dsi";

TfsConfigurationServer server = new TfsConfigurationServer(new Uri("http://tfs.domain.com:8080/tfs"), tfsCredential);
server.Authenticate();
VersionControlServer vcserver = server.GetService(typeof(VersionControlServer)) as VersionControlServer;

对于这种类型的工作,您需要使用Workspace类。如果您有一个现有的工作区,则可以从您已有的VersionControlServer实例中获取您的工作区实例。如果没有,则需要创建一个新的临时工作区,然后使用workspace类的Get()方法之一下载更改此临时工作区所需的文件

我不确定您是否要移动或复制文件。要移动文件,请使用Workspace类的PendRename()方法之一。我没有看到此方法的递归标志,因此您可能必须自己执行递归,并为要移动的文件执行PendRename()。这将把文件添加到挂起的更改列表中

要复制文件,您需要先在工作区中创建文件的本地副本,然后使用PendAdd()方法之一将新文件添加到工作区中挂起的更改列表中

最后,您可以通过GetPendingChanges()获取挂起的更改列表,然后使用checkin()执行签入


所有这些方法都是同类的。

我知道我说了移动,但这不是必须的。我只想将文件从一个TFS文件夹复制到另一个TFS文件夹。你是说为了复制,我必须先在本地下载文件,然后将它们添加到新的位置并签入?是的。除非要对文件进行分支,否则可以使用VersionControlServer.CreateBranch使用现有文件创建新分支,但复制的文件不会与复制的文件位于同一个分支中。是否会丢失TFS项目之间的历史记录复制?或者仅与工作项关联?如果重命名,则不会丢失历史记录,如果创建新副本,则是,新添加的文件将具有不同的历史记录。另一个选项是分支文件,这也将保留历史记录。