簡體   English   中英

Project Server 2013:如何使用PSI更改項目所有者

[英]Project Server 2013 : How to Change Project owner Using PSI

我需要使用PSI更新項目所有者,因為我需要使其成為一個自動過程。 我有以下用於更改項目所有者的代碼集,但是它們都沒有起作用。

以下是我已經嘗試過的第一種方法

private static bool UpdateProjectOwner()
{
   bool projUpdated = false;
   try
   {
     User newOwner = projContext.Web.SiteUsers.GetByLoginName(Username);
     Guid ProjectGuid = ProjectUID;
     //Console.Write("\nUpdating owner to {1} on project: {0} ...," ProjectGuid, Username);
     DraftProject draftProjectToUpdate = projContext.Projects.GetByGuid(ProjectGuid).CheckOut();
     draftProjectToUpdate.Owner = newOwner;
     QueueJob qJob = draftProjectToUpdate.Update();
     projContext.Load(qJob);
     projContext.ExecuteQuery();
     JobState jobState = projContext.WaitForQueue(qJob, timeoutSeconds);

      QueueJob qJob2 = draftProjectToUpdate.CheckIn(false);
      projContext.Load(qJob2);
      projContext.ExecuteQuery();
      JobState jobState2 = projContext.WaitForQueue(qJob2, timeoutSeconds);
     }
     catch (Exception ex)
     {
       Console.ForegroundColor = ConsoleColor.Red;
       Console.WriteLine(ex.Message);
       Console.ResetColor();
      }
   return projUpdated;
}

以下是我已經嘗試過的第二種方法

String projectOwnerIDstrNew = Convert.ToString(dr["ProjectOwnerUID"]);                        
String projectOwnerIDstrOriginal = Convert.ToString(project_Ds.Project[0].ProjectOwnerID);
if (!projectOwnerIDstrNew.Equals(projectOwnerIDstrOriginal))
{                             
 Guid ownerID = new Guid(projectOwnerIDstrNew);
 project_Ds.Project[0].ProjectOwnerID = ownerID;
 project_Ds.AcceptChanges();

bool managerChanged = true;

}

Is there any mistake in these above functions ?

If Not, then is there any other way of updating the project owner with help of PSI.

以下是我已經嘗試過的第一種方法

private static bool UpdateProjectOwner()
{
   bool projUpdated = false;
   try
   {
     User newOwner = projContext.Web.SiteUsers.GetByLoginName(Username);
     Guid ProjectGuid = ProjectUID;
     //Console.Write("\nUpdating owner to {1} on project: {0} ...," ProjectGuid, Username);
     DraftProject draftProjectToUpdate = projContext.Projects.GetByGuid(ProjectGuid).CheckOut();
     draftProjectToUpdate.Owner = newOwner;
     QueueJob qJob = draftProjectToUpdate.Update();
     projContext.Load(qJob);
     projContext.ExecuteQuery();
     JobState jobState = projContext.WaitForQueue(qJob, timeoutSeconds);

      QueueJob qJob2 = draftProjectToUpdate.CheckIn(false);
      projContext.Load(qJob2);
      projContext.ExecuteQuery();
      JobState jobState2 = projContext.WaitForQueue(qJob2, timeoutSeconds);
     }
     catch (Exception ex)
     {
       Console.ForegroundColor = ConsoleColor.Red;
       Console.WriteLine(ex.Message);
       Console.ResetColor();
      }
   return projUpdated;
}

以下是我已經嘗試過的第二種方法

String projectOwnerIDstrNew = Convert.ToString(dr["ProjectOwnerUID"]);                        
String projectOwnerIDstrOriginal = Convert.ToString(project_Ds.Project[0].ProjectOwnerID);
if (!projectOwnerIDstrNew.Equals(projectOwnerIDstrOriginal))
{                             
 Guid ownerID = new Guid(projectOwnerIDstrNew);
 project_Ds.Project[0].ProjectOwnerID = ownerID;
 project_Ds.AcceptChanges();

bool managerChanged = true;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM