从 Project Online 获取 ProjectSiteUrl 不起作用
Fetching ProjectSiteUrl from Project Online not working
我编写了以下代码以从 Project Online
中发布的项目中获取 ProjectSiteUrl
属性
using (ProjectContext projContext = new ProjectContext(pwaUrl))
{
using (SecureString securePassword = new SecureString())
{
Helper.GetSecurePassword(projContext, securePassword, emailID, password);
for (int i = 0; i < listGuid.Count; i++)
{
#region Load Project
string spoGuid = listGuid[i].ProjectGuid;
if (!string.IsNullOrEmpty(spoGuid))
{
Guid id = Guid.Parse(spoGuid);
var projBlk = projContext.LoadQuery(
projContext.Projects
.Where(p =>
p.Id == id
)
.Include(p => p.Id,
p => p.Tasks,
p => p.TaskLinks,
p => p.ScheduledFromStart,
p => p.ProjectSiteUrl,
p => p.Name,
p => p.IncludeCustomFields,
p => p.IncludeCustomFields.CustomFields,
P => P.IncludeCustomFields.CustomFields.IncludeWithDefaultProperties(
lu => lu.LookupTable,
lu => lu.LookupEntries,
lu => lu.LookupEntries.IncludeWithDefaultProperties(
entry => entry.FullValue,
entry => entry.InternalName)
)
)
);
projContext.ExecuteQuery();
poFieldValues.Add(LoadProjectsinPO(projBlk, projContext));
}
#endregion
//if (i > 5)
//{
// break;
//}
if (i % 5 == 0)
{
Thread.Sleep(sleepDelay);
}
}
}
}
在尝试访问 ProjectSiteUrl 属性 时,我得到 null
。我曾经得到正确的 ProjectSiteUrl 但在过去几周我变得空了。代码没有任何变化。
我们在 Project Online 中访问此 属性 的方式是否发生了变化?
我在加载查询中修改了加载属性的顺序,现在 ProjectSiteUrl
加载正常。不知道为什么它会起作用。如果有人解释一下,将不胜感激。
var projBlk = projContext.LoadQuery(
projContext.Projects
.Where(p =>
p.Id == id
)
.Include(p => p.Id,
p => p.ProjectSiteUrl, // Moved ProjectSiteUrl as second loading parameter.
p => p.Tasks,
p => p.TaskLinks,
p => p.ScheduledFromStart,
p => p.Name,
p => p.IncludeCustomFields,
p => p.IncludeCustomFields.CustomFields,
P => P.IncludeCustomFields.CustomFields.IncludeWithDefaultProperties(
lu => lu.LookupTable,
lu => lu.LookupEntries,
lu => lu.LookupEntries.IncludeWithDefaultProperties(
entry => entry.FullValue,
entry => entry.InternalName)
)
)
);
当您开始沿着获取任务的路径前进时,您不得不根据查询将其向上移动,然后是自定义字段,然后是查找值变得混乱,我对此并不感到惊讶。我建议不要一次获取所有内容,只需在项目级别、任务级别、资源级别、分配级别等获取您需要的内容。再加上使用 Odata 从报告数据库中获取信息要快得多。报告数据库具有最新发布的信息,因此它消除了有人使用草稿数据可能造成的任何混乱。
我编写了以下代码以从 Project Online
中发布的项目中获取ProjectSiteUrl
属性
using (ProjectContext projContext = new ProjectContext(pwaUrl))
{
using (SecureString securePassword = new SecureString())
{
Helper.GetSecurePassword(projContext, securePassword, emailID, password);
for (int i = 0; i < listGuid.Count; i++)
{
#region Load Project
string spoGuid = listGuid[i].ProjectGuid;
if (!string.IsNullOrEmpty(spoGuid))
{
Guid id = Guid.Parse(spoGuid);
var projBlk = projContext.LoadQuery(
projContext.Projects
.Where(p =>
p.Id == id
)
.Include(p => p.Id,
p => p.Tasks,
p => p.TaskLinks,
p => p.ScheduledFromStart,
p => p.ProjectSiteUrl,
p => p.Name,
p => p.IncludeCustomFields,
p => p.IncludeCustomFields.CustomFields,
P => P.IncludeCustomFields.CustomFields.IncludeWithDefaultProperties(
lu => lu.LookupTable,
lu => lu.LookupEntries,
lu => lu.LookupEntries.IncludeWithDefaultProperties(
entry => entry.FullValue,
entry => entry.InternalName)
)
)
);
projContext.ExecuteQuery();
poFieldValues.Add(LoadProjectsinPO(projBlk, projContext));
}
#endregion
//if (i > 5)
//{
// break;
//}
if (i % 5 == 0)
{
Thread.Sleep(sleepDelay);
}
}
}
}
在尝试访问 ProjectSiteUrl 属性 时,我得到 null
。我曾经得到正确的 ProjectSiteUrl 但在过去几周我变得空了。代码没有任何变化。
我们在 Project Online 中访问此 属性 的方式是否发生了变化?
我在加载查询中修改了加载属性的顺序,现在 ProjectSiteUrl
加载正常。不知道为什么它会起作用。如果有人解释一下,将不胜感激。
var projBlk = projContext.LoadQuery(
projContext.Projects
.Where(p =>
p.Id == id
)
.Include(p => p.Id,
p => p.ProjectSiteUrl, // Moved ProjectSiteUrl as second loading parameter.
p => p.Tasks,
p => p.TaskLinks,
p => p.ScheduledFromStart,
p => p.Name,
p => p.IncludeCustomFields,
p => p.IncludeCustomFields.CustomFields,
P => P.IncludeCustomFields.CustomFields.IncludeWithDefaultProperties(
lu => lu.LookupTable,
lu => lu.LookupEntries,
lu => lu.LookupEntries.IncludeWithDefaultProperties(
entry => entry.FullValue,
entry => entry.InternalName)
)
)
);
当您开始沿着获取任务的路径前进时,您不得不根据查询将其向上移动,然后是自定义字段,然后是查找值变得混乱,我对此并不感到惊讶。我建议不要一次获取所有内容,只需在项目级别、任务级别、资源级别、分配级别等获取您需要的内容。再加上使用 Odata 从报告数据库中获取信息要快得多。报告数据库具有最新发布的信息,因此它消除了有人使用草稿数据可能造成的任何混乱。