1

我可以在我的代码中更改项目名称、开始日期等,但我对项目所有者的更改不适用于项目服务器。这是我的代码:

        ProjectContext projectContext = new ProjectContext("http://servername:12247/PWA/");

        var projectContextVar = projectContext.LoadQuery(
                 projectContext.Projects.Include(
                 p => p.Id,
                 p => p.Name,
                 p => p.StartDate,
                 p => p.FinishDate,
                 p => p.IncludeCustomFields,
                 p => p.IncludeCustomFields.CustomFields,
                 p => p.Owner.LoginName
       ));
        projectContext.ExecuteQuery();
        PublishedProject pubPro = null;
        foreach (var p in projectContextVar)
        {
            if (new Guid("86C21C48-71BE-E811-80C4-00155D011303") == p.Id)
            {
                pubPro = p;
            }
        }


        DraftProject draft;
        draft = pubPro.Draft;
        JobState job1 = projectContext.WaitForQueue(draft.CheckIn(true), 20);

        draft = pubPro.CheckOut();
        projectContext.Load(draft);
        projectContext.ExecuteQuery();
        var resources = projectContext.EnterpriseResources;
        projectContext.Load(resources);
        projectContext.ExecuteQuery();
        foreach (EnterpriseResource er in resources)
        {
            if (er.Name.Equals("some name"))
            {
                var o = er.User;
                projectContext.Load(o);
                projectContext.ExecuteQuery();
                projectContext.Load(draft.Owner);
                projectContext.ExecuteQuery();
                draft.Owner = o;
                Console.WriteLine("changed...");
            }
        }
        draft.Update();
        JobState jobState = projectContext.WaitForQueue(draft.Publish(true), 10);

草稿项目的所有者最终成功更改为预期的用户,但在发布草稿项目后,更改不适用于该项目。任何人都可以说我的代码有什么问题,或者上帝禁止项目服务器吗?!

4

1 回答 1

0

您的代码非常接近,但我认为不可能根据 EnterpriseResource 用户对象设置项目所有者。

相反,请尝试使用 SharePoint 用户对象。

var newOwner = projectContext.Web.SiteUsers.GetByLoginName("some name");
draft.Owner = newOwner;

这里的 newOwner 将是 Microsoft.SharePoint.Client.User 类型的对象,这是 ProjectDraft 类中的“所有者”字段所期望的。

于 2019-02-01T21:42:58.377 回答