无法更改项目所有者



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

        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);

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新