У меня есть следующий код, который обновляет определенные поля задач. Проблема с этим кодом в том, что мне нужно публиковать весь проект после обновления каждой задачи по очереди. Так, например, если бы мне нужно было обновить 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.