Я работаю над консольным приложением для сервера проекта. Atm я могу прочитать имя и процент работы каждой задачи, назначенной проекту. У каждой задачи есть настраиваемое поле с уникальным идентификатором. Это выглядит так.
Как получить значение уникального идентификатора? например 84
Вот мой код для отображения имени задачи и процента работы:
var projColl = projContext.LoadQuery(projContext.Projects
.Where(p => p.Name == projectName)
.Include(
p => p.Name,
p => p.Tasks,
p => p.Tasks.Include(
t => t.Name,
t => t.PercentComplete,
t => t.CustomFields
)
)
);
projContext.ExecuteQuery();
PublishedProject theProj = projColl.First();
PublishedTaskCollection taskColl = theProj.Tasks;
PublishedTask theTask = taskColl.First();
CustomFieldCollection LCFColl = theTask.CustomFields;
Dictionary<string, object> taskCF_Dict = theTask.FieldValues;
int k = 1; //Task counter.
foreach (PublishedTask t in taskColl)
{
Console.WriteLine("\t{0}. {1, -15} {2,-30}{3}", k++, t.Name, t.PercentComplete);
}
Я пытался использоватьConsole.WriteLine("\t{0}. {1, -15} {2,-30}{3}", k++, t.Name, t.PercentComplete,t.CustomFields);
но я получаю только
Microsoft.ProjectServer.Client.CustomFieldCollection
Я также знаю внутреннее имя пользовательского поля, если это поможет
РЕДАКТИРОВАТЬ: я добавил этот пример, но я получаю только значения первой строки. Есть идеи, как зациклить каждую строку?
LCFColl
определяется как настраиваемые поляtheTask
, а не как переменнаяt
, которую вы используете внутри своего цикла. Начните с перемещения объявленияLCFColl
внутри цикла задач:CustomFieldCollection LCFColl = t.CustomFields;
. - person Rachel Hettinger   schedule 13.03.2019