我有以下情况。
我使用TFS以编程方式创建临时工作空间。然后我将它映射到我本地计算机上的某个位置,以便我能够签入/签出文件。由于通过工作空间映射到本地驱动器是创建文件结构的原因。通过我创建的工作空间对象删除映射的方法是什么?
我尝试了以下内容。
WorkingFolder tempFolder = workspace.getWorkingFolderForServerItem(serverItem);
workspace.DeleteMapping(tempFolder);
在调试模式中单步执行,我生成的tempFolder对象保存正确的本地映射以及正确的服务器映射。我似乎无法删除本地内容。这大概是正确的还是你建议完全不同的东西?
答案 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);
感谢您的帮助!