所以我有一个 .NET 应用程序,它通过并生成一系列文件,将它们输出到本地目录,然后确定是否需要更新现有文件或将新文件添加到 TFS(Team Foundation Server)项目中。
我的本地机器上有一个工作区,并且有 10 个不同的工作文件夹,这些文件夹是我在这台特定机器上从事的其他编码项目。当我去检查文件是否已经存在于 TFS 项目中并且需要更新或者是否需要作为新文件添加到项目中时,就会出现我的问题。
片段:
静态字符串 TFSProject = @"$/SQLScripts/"; 静态 WorkspaceInfo wsInfo; 静态版本控制服务器版本控制; 静态字符串 argPath = "E:\\SQLScripts\\"; wsInfo = Workstation.Current.GetLocalWorkspaceInfo(argPath); TeamFoundationServer tfs = new TeamFoundationServer(wsInfo.ServerUri.AbsoluteUri); versionControl = (VersionControlServer)tfs.GetService(typeof(VersionControlServer)); 工作区工作区 = versionControl.GetWorkspace(wsInfo); workspace.GetLocalItemForServerItem(TFSProject);
此时,我检查文件是否存在,然后做两件事之一。如果文件存在,那么我将文件标记为 EDIT,然后将文件写出到本地目录,否则我将先编写文件脚本,然后将文件添加到工作区。我不在乎物理文件是否与我正在生成的文件相同,因为我这样做是作为“跟踪更改”的 SAS70 要求
如果它存在,我会这样做:
workspace.PendEdit(filename,RecurisionType.Full);
脚本输出文件(文件名);
或者如果它不存在
scriptoutthefilename(filename);
workspace.PendAdd(filename,true);
好的,所有这些都是为了解决问题。当我去检查针对 PROJECT 的未决更改时,我会获得工作区中本地计算机上所有项目的所有未决更改。
// 显示我们挂起的更改。 PendingChange[] pendingChanges = workspace.GetPendingChanges(); foreach (PendingChanges 中的pendingChanges) { 做点什么... }
我认为通过将工作区设置为 workspace.GetLocalItemForServerItem(TFSProject) 它只会为我提供该特定工作文件夹的对象。
如果有什么方法可以强制工作区对象只处理特定的工作文件夹?
这有什么意义吗?提前致谢...