1

C# CSOM ライブラリを使用して新しい EPT (プロジェクト サーバー 2013) を作成しようとしています。しかし、以下のエラーが発生しました。

"PJClientCallableException: EnterpriseProjectTypeInvalidCreatePDPUid"

いくつかの記事では、「IsCreate=true」を変更するように指示されています。しかし、それは私にとっては成功しません。これが私が行ったコードです。

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

誰でも問題を説明したり、作業コード部分を提供したりできますか?

4

1 に答える 1

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

そのコードの最後の行が終了したら、タスクなどを定義するためにプロジェクトを作成して公開する必要があります。

あなたのコードに何が起こっているのかわかりません。

それがあなたに役立つことを願って、

于 2016-07-11T07:56:21.367 に答える