我有以下代码可以更新某些任务字段。这段代码的问题是,我必须在逐个更新每个任务后发布整个项目。例如,如果我有 500 个任务要更新,则该项目必须发布 500 次。如您所见,这完全是矫枉过正、缓慢且不必要的。
using (ProjectContext projectContext = GetClientContext(psCred))
{
projectContext.Load(projectContext.Projects);
projectContext.ExecuteQuery();
foreach (var project in projectContext.Projects)
{
var draftProject = project.CheckOut();
projectContext.Load(draftProject.Tasks);
projectContext.ExecuteQuery();
projectContext.Load(draftProject.Task);
projectContext.ExecuteQuery();
foreach (var task in draftProject.Tasks)
{
task["FIELD"] = "VALUE";
var job = draftProject.Update();
projectContext.WaitForQueue(job, int.MaxValue);
job = draftProject.Publish(true);
projectContext.WaitForQueue(job, int.MaxValue);
}
}
}
我希望有一种方法可以一次更新所有项目任务,最后只发布一次,就像 Microsoft Project 桌面应用程序那样。