如何以编程方式删除本地tfs内容?

时间:2009-06-12 18:49:29

标签: c# tfs

我有以下情况。

我使用TFS以编程方式创建临时工作空间。然后我将它映射到我本地计算机上的某个位置,以便我能够签入/签出文件。由于通过工作空间映射到本地驱动器是创建文件结构的原因。通过我创建的工作空间对象删除映射的方法是什么?

我尝试了以下内容。

WorkingFolder tempFolder = workspace.getWorkingFolderForServerItem(serverItem);
workspace.DeleteMapping(tempFolder);

在调试模式中单步执行,我生成的tempFolder对象保存正确的本地映射以及正确的服务器映射。我似乎无法删除本地内容。这大概是正确的还是你建议完全不同的东西?

3 个答案:

答案 0 :(得分:3)

在TFS中,在本地删除文件并告诉服务器您不再拥有它们的技巧是将文件放在Changeset 1(即它们存在之前)。代码类似于:

workspace.Get(
    new string[] {"C:\\LocalPath"},
    new ChangesetVersionSpec(1),
    RecursionType.Full,
    GetOptions.None);

请参阅以下博客文章,我将对此进行更多解释:

也就是说,如果工作区只是暂时的而你不再需要它,那么做一个workspace.Delete()后跟传统的文件删除是一种非常好的做事方式。如果你试图保持工作区周围,你可能会遇到麻烦(因为TFS认为这些文件仍然在你的本地工作区,除非你告诉它不是)

答案 1 :(得分:1)

  

由于通过工作区映射到本地驱动器是创建文件结构的原因。

我认为你错了。只有在创建映射后执行get(无论是从Team Explorer GUI,“tf.exe get”还是其他方式),才会创建本地文件夹(和文件)。

删除工作区映射后,您需要创建代码以自行删除文件和文件夹。

答案 2 :(得分:0)

感谢Richard,我决定不尝试通过工作区删除文件。

假设:

WorkingFolder tempFolder = workspace.getWorkingFolderForServerItem(serverItem);

我最终做了:

File.setAttributes(tempFolder.LocalItem, FileAttributes.normal)//Get rid of read-only
File.Delete(tempFolder.LocalItem);

感谢您的帮助!