[英]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.