我正在尝试通过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"找到工作映射。
任何猜测?
答案 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,展示如何创建工作区,等待更改,检查这些更改以供参考。