我尝试向“/_api/ProjectServer/Projects('projectid')/Assignments”发送请求,但它所做的只是返回上次分配的重复项,这很奇怪,因为它返回的对象数总是等于项目中的作业数。
基本上,如果我为一百个不同任务中的每一个分配一个资源,该调用将返回列表中最后一个任务分配的 100 个副本。
我怀疑这可能是一个错误,如果有人可以确认或否认我的假设和/或让我知道是否有任何其他方法可以检索项目中的任务列表,我将不胜感激。
我尝试向“/_api/ProjectServer/Projects('projectid')/Assignments”发送请求,但它所做的只是返回上次分配的重复项,这很奇怪,因为它返回的对象数总是等于项目中的作业数。
基本上,如果我为一百个不同任务中的每一个分配一个资源,该调用将返回列表中最后一个任务分配的 100 个副本。
我怀疑这可能是一个错误,如果有人可以确认或否认我的假设和/或让我知道是否有任何其他方法可以检索项目中的任务列表,我将不胜感激。
我不完全知道如何使用休息,但我想使用 CSOM 为您提供几行代码,如果我正确理解了这个问题,它可能会对您有所帮助:
private static void ListPublishedProjects()
{
// Get the list of projects on the server.
projContext.Load(projContext.Projects);
projContext.ExecuteQuery();
var proj = projContext.Projects.First(p => p.Name == "<project name>");
projContext.ExecuteQuery();
//You must ckeck out the project and load it's tasks
var draftProj = proj.CheckOut();
projContext.Load(draftProj.Tasks);
projContext.ExecuteQuery();
//Loop between all tasks
foreach (DraftTask task in draftProj.Tasks)
{
// Load all assignments in that task
projContext.Load(task.Assignments);
projContext.ExecuteQuery();
//Loop between al assignments
foreach (var assignment in task.Assignments)
{
projContext.Load(assignment.Owner, temp => temp.LoginName, temp => temp.Email);
projContext.Load(assignment.Resource);
projContext.ExecuteQuery();
Console.WriteLine("\n\t RESOURCE NAME:" + assignment.Resource.Name + " => " + assignment.ActualWork);
}
}
//Remember to publish and checkin the project when you finish your TODOs
draftProj.Publish(true);
draftProj.CheckIn(true);
QueueJob qJob = projContext.Projects.Update();
JobState jobState = projContext.WaitForQueue(qJob, 200);
}
}
希望能帮助到你,