1

Я пытаюсь создать новый EPT (сервер проекта 2013) с использованием библиотеки C# CSOM. Но произошла ошибка.Как создать новый EPT с помощью CSOM

"PJClientCallableException: EnterpriseProjectTypeInvalidCreatePDPUid"

Пара статьи сказать, чтобы изменить "IsCreate = истина". Но для меня это не устраивает. Вот код, который я сделал.

public void CreateEnterpriseProjectType(Guid eptGuid, string eptName, string eptDescription) 
    { 
     ProjectContext pwaContext = new ProjectContext(this.PWA_URL); 

     EnterpriseProjectTypeCreationInformation eptData = new EnterpriseProjectTypeCreationInformation(); 

     eptData.Id = eptGuid; 
     eptData.Name = eptName; 
     eptData.Description = eptDescription; 
     eptData.IsDefault = false; 
     eptData.IsManaged = true; 
     eptData.WorkspaceTemplateName = "PROJECTSITE#0"; 
     eptData.ProjectPlanTemplateId = Guid.Empty; 
     eptData.WorkflowAssociationId = Guid.Empty; 
     eptData.Order = 4; 

     List<ProjectDetailPageCreationInformation> projectDetailPages = new 
     List<ProjectDetailPageCreationInformation>() { 
      new ProjectDetailPageCreationInformation() { 
       Id = pwaContext.ProjectDetailPages[1].Id, IsCreate = true } 
     }; 
     eptData.ProjectDetailPages = projectDetailPages; 

     pwaContext.Load(pwaContext.EnterpriseProjectTypes); 
     pwaContext.ExecuteQuery(); 
     EnterpriseProjectType newEpt = pwaContext.EnterpriseProjectTypes.Add(eptData); 
     pwaContext.EnterpriseProjectTypes.Update(); 
     pwaContext.ExecuteQuery(); 
    } 

Может кто-нибудь объяснить проблему или предоставить часть рабочего кода.

ответ

0

Я хотел бы предложить следующее:

Определить тип корпоративного проекта:

string basicEpt = "Enterprise Project"; // Basic enterprise project type. 
int timeoutSeconds = 10; // The maximum wait time for a queue job, in seconds. 

И тогда, когда вы создаете новый проект, работать так:

ProjectCreationInformation newProj = new ProjectCreationInformation(); 

      newProj.Id = Guid.NewGuid(); 
      newProj.Name = "Project Name"; 
      newProj.Description = "Test creating a project with CSOM"; 
      newProj.Start = DateTime.Today.Date; 


      // Setting the EPT GUID is optional. If no EPT is specified, Project Server 
      // uses the default EPT. 
      newProj.EnterpriseProjectTypeId = GetEptUid(basicEpt); 

      PublishedProject newPublishedProj = projContext.Projects.Add(newProj); 
      QueueJob qJob = projContext.Projects.Update(); 

      // Calling Load and ExecuteQuery for the queue job is optional. 
      // projContext.Load(qJob); 
      // projContext.ExecuteQuery(); 
      JobState jobState = projContext.WaitForQueue(qJob, timeoutSeconds); 

Когда заканчивается последняя строка этого фрагмента кода, проект должен быть создан и опубликован для определения задач или чего-то еще.

Я не знаю, что происходит с вашим кодом, кажется замечательным.

Надеется, что это помогает вам,

+0

Я обнаружил, что с вашим кодом, проект по-прежнему создаются как Project Enterprise, независимо от того, что basicEpt вы задаете ... Поэтому только администратор может использовать сайт, пока он не будет вручную изменение ,. знаете ли вы, как это изменить? – Crezzer7

+0

Я думаю, что это проблема SharePoint. Если я понимаю ваш вопрос, вы хотите иметь доступ к PWA для других пользователей, а не админов? –

+0

Я поставил здесь вопрос, чтобы еще раз пояснить, что я имею в виду: http://stackoverflow.com/questions/39953710/creating-a-project-online-using-c-sharp-for-sharepoint, но в основном да, когда проект, функция Enterprise Project должна деактивироваться вручную. Я хочу, чтобы это было сделано при создании. (PWA Settings -> Connected Sharepoint Sites), где эта опция. Спасибо за ответ – Crezzer7