C#TFS Workspace.PendADD没有该文件夹的工作映射

时间:2016-04-14 08:25:03

标签: c# tfs version-control

我正在尝试通过C#向TFS添加文件。这是我的代码。

 Workspace workspace = versionControl.QueryWorkspaces(Environment.MachineName, versionControl.AuthorizedUser, Environment.MachineName).SingleOrDefault();
        if (workspace == null)
        {
            w("No workspace configured");
            return;
        }

        //String topDir = null;

       var troubleshooter = workspace.GetWorkingFolderForLocalItem("LocalPath");  

workspace.PendAdd("Filepath", true);

奇怪的是,当我调用workspace.GeWorkingFolderForLocalItem时,它工作正常并获取文件夹映射。当我尝试从同一路径向TFS中的PendADD文件进行PendADD时出现问题,然后发生致命错误,指出没有为" LocalPath"找到工作映射。

任何猜测?

2 个答案:

答案 0 :(得分:2)

似乎问题出现在VersionControlServer的缓存中。缓存未完全更新,这就是为什么" GetWorkingFolderforServerItem"运作良好,PendAdd不是。 PendAdd使用缓存。以下命令完成了这个伎俩。

            Workstation.Current.EnsureUpdateWorkspaceInfoCache(versionControl, versionControl.AuthorizedUser);

答案 1 :(得分:0)

根据您的错误信息,确保您的工作区映射已正确设置:否则,递归调用workspace.PendAdd实际上不会添加任何内容。请参阅 Edward Thomson 对此问题的回答中的详细说明:Calls to `Workspace.PendAdd` not adding items

以下是来自MSDN的另一个blog,展示如何创建工作区,等待更改,检查这些更改以供参考。