Невозможно изменить владельца проекта - PullRequest
0 голосов
/ 31 января 2019

Я могу изменить имя проекта, дату начала и т. Д. В моем коде, но мое изменение владельца проекта не относится к серверу проекта.Вот мой код:

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

Владелец чернового проекта наконец-то успешно изменен на ожидаемого пользователя, но после публикации чернового проекта это изменение не применяется к проекту.Может ли кто-нибудь сказать, в чем проблема с моим кодом, или не дай бог Project-сервером?!

1 Ответ

0 голосов
/ 02 февраля 2019

Ваш код очень близок, но я не верю, что можно установить владельца проекта на основе пользовательского объекта EnterpriseResource.

Вместо этого попробуйте использовать объект пользователей SharePoint.

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

newOwner здесь будет объектом типа Microsoft.SharePoint.Client.User, которого ожидает поле «Владелец» в классе ProjectDraft.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...